var fn = function() {
this.method1 = function() {
return this.public;
};
this.method2 = function() {
return {
init: function() { return this.public; }
}
};
fn.prototype.public = "method prototype";
};
创建对象fn
var object = new fn();
object.method1() // "method prototype"
object.method2().init(); // undefined
this.public原型在method2()。init()函数中运行return undefined?
是否有Prototype的替代品? 谢谢。
答案 0 :(得分:1)
此问题与this
init
的{{1}}函数绑定的不同范围有关,请尝试以下操作:
method2()
所以
this.method2 = function() {
var self = this;
return {
init: function() { return self.public; }
}
};
答案 1 :(得分:1)
这有很多错误。
但是对你的具体问题的直接回答是调用init
返回undefined,因为它对this
的引用是你创建的内部对象,而不是你认为它引用的实例
我建议你不要试图解决这个特殊问题,并在JavaScript中学习原型继承的基础知识
答案 2 :(得分:0)
this
函数中的init
是object.method2()
返回的对象,其上没有public
属性。