Прикреплённый контекст
Будет ли в 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, время: 08:20. |