[英]Javascript: Unable to access public prop from private method
快速提问。
我已经使用jQuery很长时间了,但是我从来没有对“类”(松散使用)有太多的经验。
这是我的测试“类”,可从http://jsfiddle.net/TxUs2/获得 。
function MyClass(prop) {
this.prop = prop;
var init = function()
{
alert(this.prop);
}
init();
}
var myClass = new MyClass();
我希望init()方法是私有的。 请有人可以简要解释一下为什么我无法通过私有方法访问公共财产吗?
我假设它与“ this”有关,本质上是从方法内部指向方法本身,而不是包含函数(或“类”)。 我该如何解决?
提前谢谢了。
编辑:非常感谢您的所有投入。 所有答案都很好。 :)
问题是,当你调用init
它被称为没有上下文,因此this
并不是指的实例MyClass
。 您可以通过保存的参考解决这个this
构造函数,调用init
的背景下this
或结合init
到this
:
保存this
的引用:
function MyClass(prop) { this.prop = prop; var that = this; var init = function() { alert(that.prop); } init(); }
调用init
中的情况下this
:
init.call(this);
将init
与this
绑定(这使每个调用的行为都类似于init.call(this)
):
var init = function () { alert(this.prop); }.bind(this); init();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.