快速提问。
我已经使用jQuery(适度)很长一段时间了,但我从来没有真正体验过"类" (松散地使用)。
这是我的测试"课程",可在http://jsfiddle.net/TxUs2/获得。
function MyClass(prop) {
this.prop = prop;
var init = function()
{
alert(this.prop);
}
init();
}
var myClass = new MyClass();
我希望init()方法是私有的。有人可以简单解释为什么我无法通过私人方法访问公共财产吗?
我假设它与“这个'本质上从方法中指向方法本身,而不是包含函数(或"类")。我该如何解决这个问题?
非常感谢提前。
编辑:非常感谢你的所有投入。所有的答案都很棒。 :)答案 0 :(得分:4)
问题在于,当您调用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();
答案 1 :(得分:3)