【问题标题】:Javascript adding functionsJavascript添加功能
【发布时间】:2012-01-28 09:39:56
【问题描述】:

为了给一个对象添加一个函数,我把它写在里面像这样AddX:

function Foo()
{
    this.x = 1;

    this.AddX = function(y)
    {
      this.x += y;
    }

}

但我发现其他方法可能是使用prototype

function Foo()
{
    this.x = 1;
}

Foo.prototype.AddX = function(y)
{
    this.x += y;
}

使用:

obj = new Foo;
obj.AddX(5);
alert(obj.x);

两种情况下的结果相同。哪条路线最好,或者两者之间有什么区别?还有性能问题吗?

【问题讨论】:

    标签: javascript jquery oop


    【解决方案1】:

    在您的第一种方法中,addX 是一个实例方法。因此Foo 的每个实例都将拥有自己的addX 副本。

    在第二种方法中,addX 被添加到 prototype 上,Foo 的每个实例共享相同的原型。

    因此,第二种方法将节省更多内存。如果要创建大量实例,则最好使用第二种方法。

    【讨论】:

    • 无论如何,第二种方法是正确的,不仅适用于大量实例。
    【解决方案2】:

    原型用于添加反映在函数的所有实例中的特性。

    例如:

    //First, create the custom object "circle"
    function circle(){
    }
    circle.prototype.pi=3.14159
    

    Taken from here

    【讨论】:

      【解决方案3】:

      在您的示例中,两者之间没有区别 但是您可以使用原型属性向 JavaScript 内置对象添加函数,例如 Date 、String 等...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        相关资源
        最近更新 更多