【问题标题】:When should I use "prototype" in JavaScript什么时候应该在 JavaScript 中使用“原型”
【发布时间】:2011-11-10 21:22:17
【问题描述】:

我已经用 JavaScript/JQuery 进行了大量的编程。

但我从未使用过“原型”。事实上,我不知道这是什么意思。

你有什么实用的例子有用吗?

【问题讨论】:

标签: javascript


【解决方案1】:

假设您询问的是 Object.prototype,

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

阅读this,然后可能是this

【讨论】:

    【解决方案2】:

    最简单的例子:

    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 实例并希望节省一些内存,这可能会破坏交易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 2013-10-19
      • 2011-11-01
      • 1970-01-01
      • 2023-04-02
      • 2011-04-15
      • 2017-04-10
      • 2012-03-19
      相关资源
      最近更新 更多