Прикреплённый контекст
Будет ли в 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: |
Цитата:
Цитата:
|
Цитата:
Еще более удивительно, как такое статик-говно умудряется быть настолько тормозным. Такие кастрированные языки обычно хорошо компилируются. Хоть они и памяти отжирают немеряно, с перформансом должно быть ок, в теории. Воистину, феноменальный язык. |
Цитата:
Самом деле, js никуда не идет. Потому что идти некуда. Я вот смотрю на всякие web components, ES6, и не вижу в этом смысла.. Тленно всё в web-е:D |
Цитата:
|
Цитата:
|
Цитата:
Для передачи метода объекта в качестве коллбека с автоматической привязкой контекста сейчас обсуждается специальный оператор - https://github.com/zenparsing/es-function-bind. |
Erolast, спасибо, именно об этом и спрашивал. Полезная инфа.
|
Erolast,
Слышь, ходячая спецификация, ты хоть че-нибудь кроме чтения доков умеешь делать? Хоть одну программу написал в своей жизни? Начни с факториала, мля, чтоли. Лучше поздно, чем никогда, |
Sweet,
Из ES2015, не? class Point extends Base { constructor(x,y) { super(); this[px] = x, this[py] = y; this.r = function() { return Math.sqrt(x*x + y*y); } } get x() { return this[px]; } get y() { return this[py]; } proto_r() { return Math.sqrt(this[px] * this[px] + this[py] * this[py]); } equals(p) { return this[px] === p[px] && this[py] === На node.js уже можно через это |
Часовой пояс GMT +3, время: 15:01. |