我什么时候应该在JavaScript中使用“prototype”

时间:2011-09-05 21:27:45

标签: javascript

我在JavaScript / JQuery中做了大量的编程。

但我从未使用过“原型”。事实上,我不知道它意味着什么。

如果它有用,你有一个实际的例子吗?

2 个答案:

答案 0 :(得分:11)

最简单的例子:

function Foo() {
    this.bar = function() {
        return 42;
    }
}

现在,您可以根据需要创建Foo的任意数量的实例并致电bar()

var a = new Foo();
var b = new Foo();

尽管两个对象的bar()方法在两种情况下完全相同,但这些方法都是不同的。实际上,每个新的Foo对象都将拥有此方法的新副本。

另一方面:

function Foo() {}
Foo.prototype.bar = function() {
    return 42;
}    

具有相同的最终结果,但该函数仅在对象prototype中存储一次,而不是在对象本身中存储。如果您创建大量Foo个实例并希望节省一些内存,这可能会造成交易。

答案 1 :(得分:2)

假设您询问的是Object.prototype,

  

JavaScript中的所有对象都来自Object;所有对象都从Object.prototype继承方法和属性,尽管它们可能被覆盖。例如,其他构造函数的原型覆盖构造函数属性并提供自己的toString方法。对象原型对象的更改将传播到所有对象,除非在原型链中进一步覆盖受这些更改影响的属性和方法。

阅读this,然后阅读this