试图做到这一点:
var c = {
x: 'other context'
};
var o = {
x: 'this context',
get otherContext () {
alert(this.x);
}.bind(c)
};
o.otherContext;
但是我遇到了一个Syntax Error
:
Uncaught SyntaxError: Unexpected token .
一个使用场景
你可能会问,为什么我想在getter上更改上下文。让我来说一下我在这里的应用场景:创建一个检索DOM属性的帮助对象。该助手对象在另一个对象内进行定义,该对象持有我需要属性的DOM元素的引用。所以,这个助手对象实际上只是一些DOM方法的代理,并且我会做一些类似这样的事情:
var ViewObject = function () {
this.el = document.getElementById('id');
var proxy = {
...
get left() {
return this.el.offsetLeft
}.bind(this)
...
};
};
在我看来,这是一个相当合理的用例。并且其中一个具有父对象“this
”上下文将会很有用。(也许代理功能可能更适合?嗯...我没有考虑过。尽管获取器是ES5而代理是ES6,并且仅由evergreens和Edge 13+实现,但在ES5范围内,我认为这个问题仍然非常适用。)
definedProperty
жЭ•еЃЪдєЙдљ†жГ≥и¶БзЪДgetterгАВ - elclanrs