Javascript原型不工作

时间:2011-02-10 05:48:47

标签: javascript object prototype

您好我不知道这是否是我在理解Javascript原型对象时的错误。

很明显我是Javascript单例概念的新手并且缺乏明确的知识但是通过一些推荐网站我为我的系统制作了一个示例代码,但是它给出了一些我无法找到的错误所以我在寻求你的帮助。我的代码是:

referrelSystem = function(){
//Some code here
}();

原型功能:

referrelSystem.prototype.postToFb = function(){
//Some Code here
};

我收到错误,说原型未定义!

对不起我现在想到了这个

修改

我用过这样的话:

referrelSystem = function(){
 return{
        login:getSignedIn,
        initTwitter:initTw
    }
};

这会导致问题吗?

4 个答案:

答案 0 :(得分:5)

使用原型定义JavaScript类的典型方法是:

function ReferrelSystem() {
    // this is your constructor
    // use this.foo = bar to assign properties
}

ReferrelSystem.prototype.postToFb = function () {
    // this is a class method
};

您可能会对自执行函数语法(闭包)感到困惑。当您希望在班级中拥有“私人”成员时使用。你在这个闭包中声明的任何东西只能在闭包本身中看到:

var ReferrelSystem = (function () {
    function doSomething() {
        // this is a "private" function
        // make sure you call it with doSomething.call(this)
        // to be able to access class members
    }

    var cnt; // this is a "private" property

    function RS() {
        // this is your constructor
    }

    RS.prototype.postToFb = function () {
        // this is a class method
    };

    return RS;
})();

如果您正在考虑创建图书馆,我建议您学习common module patterns

答案 1 :(得分:3)

我认为您不打算立即执行这些功能,将其更改为:

var referrelSystem = function(){
//Some code here
};

(+ var, - ())

与原型功能相同:

referrelSystem.prototype.postToFb = function(){
//Some Code here
};

(这里你不需要var,因为你要分配已经存在的东西。)

答案 2 :(得分:3)

更新:查看更新后的代码,return中的referrelSystem将无法正常工作,因为在调用new referrelSystem()时会丢弃返回值。< / p>

不是返回一个对象,而是将这些属性设置为this(构造的referrelSystem实例):

var referrelSystem = function () {
    // I assume you have other code here

    this.login = getSignedIn;
    this.initTwitter = initTw;
};

答案 3 :(得分:1)

一个函数应return作为

  

原型

属性。 看一下这里的example