在变量实例上访问原型方法

时间:2013-03-28 09:26:01

标签: javascript oop

var Foo = (function () {

    var cls = function () {
        this.prototype = {
            sayhi: function () {
                alert('hi');
            }
        };
    };

    cls.staticMethod = function () {};

    return cls;

})();

var f = new Foo();

为什么我无法访问我的sayhi方法? this不引用cls变量吗?

1 个答案:

答案 0 :(得分:1)

您正尝试在prototype的每个实例上设置cls属性。您真正想要做的是设置prototype本身的cls属性:

var Foo = (function () {

    var cls = function () {}; // Constructor function

    cls.prototype = { // Prototype of constructor is inherited by instances
        sayhi: function () {
            alert('hi');
        }
    };

    return cls;

})();