我有一个关于 Javascript 对象的问题。如何访问父类的属性?
function randomObj() // for example button obj
{
this.text = "this is obj";
}
function parentClass()
{
this.name = "parent";
this.subObj;
}
parentClass.prototype.generate = function()
{
this.subObj = new randomObj();
this.subObj.changeParentClassName = function() // button obj wants to change name
{
this.name = "not parent";
}
}
var sampleObj = new parentClass();
sampleObj.generate();
sampleObj.subObj.changeParentClassName (); // does not works
看来“changeParentClassName”中的“this”是subObj,我如何访问parentclass.name?
JavaScript 的this
将是左侧的对象.
调用函数时。在本例中,它是 subObj 而不是 ParentObj,因此您要设置name
在子对象上。你有2个选择,你可以把this
在不同的变量里面generate
所以它不会被 JavaScript 取代this
逻辑。就像是:
var parentObj = this;
this.subObj.changeParentClassName = function() // button obj wants to change name
{
parentObj.name = "not parent";
};
或者您可以使用bind()创建一个新函数,该函数将具有this
绑定到一个已知对象(在本例中是您的父对象),例如:
this.subObj.changeParentClassName = (function() // button obj wants to change name
{
this.name = "not parent";
}).bind(this); // bind the 'this' inside the changeParentClassName to the 'this' inside generate
查看函数绑定() http://www.javascripture.com/Function#bind有关绑定和交互式示例的更多信息。
请注意,如果您的目标是最新版本的 Javascript(ECMAScript 6 或更高版本),则可以使用=>
不改变值的函数this
与申报范围相比。所以你可以使用:
this.subObj.changeParentClassName = () => // button obj wants to change name
{
this.name = "not parent";
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)