Прикреплённый контекст
Будет ли в js когда-нибудь такое:
class Foo { bar() { return this; } } let foo = new Foo; let test = x => x(); test(foo.bar) == foo; ??? В стрелочных функциях же биндится текущий контекст, было бы здорово, если бы и методам класса экземпляр прикреплялся, не? |
"Мы к вам профессор вот по какому поводу." Расскажите народу что такое вы изобрели.
|
Цитата:
Если в синтаксисе ES5, то я вот о чём: var obj = { someText: "some text", func: function () { return this.someText; } }; var func = obj.func; obj.func() == "some text"; func() == undefined; |
Эту забавную особенность JavaScript можно было бы назвать: "у вас this отклеился". По ходу ничего не изменится.
|
Цитата:
var obj=function(){ var someText="someText" return{ someText: someText, func: function () { return someText; } } }() var func = obj.func; alert([ obj.func(), func() ]) var obj={ someText: "some text", } obj.func=function () { return this.someText }.bind(obj) var func = obj.func; alert([ obj.func(), func() ]) // ::: [ 'some text', 'some text' ] // ::: [ 'some text', 'some text' ] |
Цитата:
|
Цитата:
Foo=function(name) { this.name=name this.bar=function(){return this}.bind(this) } foo = new Foo("foo"); test =function(x){return x()} console.log(test(foo.bar)) alert(test(foo.bar).name) // ::: { name: 'foo', bar: [Function] } // ::: foo |
Цитата:
|
Цитата:
Когда используешь js, постоянно используешь callback-и. И удобно ведь передавать функции—члены класса. Странно, что эту возможность игнорят. Цитата:
Код:
class Foo: |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 18:27. |