【问题标题】:What is the point of prototypes in JavaScript? Why not add method directly to constructor? [duplicate]JavaScript 中原型的意义何在?为什么不直接将方法添加到构造函数? [复制]
【发布时间】:2014-01-11 02:19:53
【问题描述】:

所以我在 CodeAcademy 学习了几节 JavaScript 课程,然后我遇到了关于原型的这一部分。

代码中的一点:

function Dog(breed){
    this.breed = breed;
};

Dog.prototype.bark = function(){
    console.log("Bark!");
    };

我不明白这样做的意义。为什么不这样做呢? (我最初学习的方式。)

function Dog(breed){
    this.breed= breed;
    this.bark = function(){
        console.log("Bark!");
    };
}

第二种方式,一切都在一个块中,而不是分开。第一个有什么好处?我知道有,只是没看到。

【问题讨论】:

  • @user1768884 :这是一个非常好的问题。这里有很多人能够对这些问题给出非常详细的答案!希望看到答案。
  • 对于你的小例子没关系,原型化也没有什么意义,但是想象一下你有很多对象要创建,你可以使用一个通用对象作为模板,并且然后在该通用模板上进行原型制作,一旦您更改了该通用模板,所有其他对象也会自动更新,这对您来说会更有意义,您会明白为什么原型制作很棒并且可以为您节省大量工作。

标签: javascript constructor prototypejs prototype


【解决方案1】:

一个区别是,在原型的情况下,函数只存在一次,改变它会改变所有使用这个原型的对象。在this. 的情况下,该函数在每个对象中重复。

这会在足迹和语义上有所不同。

【讨论】:

    【解决方案2】:

    这是出于性能原因。在创建对象的新实例并调用本机方法时,每次创建都会消耗更多内存。 另一方面,当使用原型时,无论创建多少对象,它都更安全。

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2011-05-29
      • 2012-03-09
      • 2015-10-16
      • 1970-01-01
      • 2013-06-24
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多