OOP prototype.method调用this.method

时间:2012-10-02 10:25:16

标签: javascript

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的替代品? 谢谢。

3 个答案:

答案 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函数中的initobject.method2()返回的对象,其上没有public属性。