`this`和`prototype`有什么区别? javascript oop

时间:2013-10-19 17:10:55

标签: javascript oop

在codecademy.com上浏览javascript课程时,我有点困惑。

首先,我们一直在学习如何将方法添加到类:

function Dog (breed) {
    this.breed = breed;
    this.sayHello = function () {
        console.log("Hello this is a " + this.breed + " dog");
    }
};
var someDog = new Dog("golden retriever");
someDog.sayHello();

然后我们开始了“原型”。还有这个例子:

function Dog (breed) {
    this.breed = breed;
};
Dog.prototype.sayHello = function () {
    console.log("Hello this is a " + this.breed + " dog");
}
var someDog = new Dog("golden retriever");
someDog.sayHello();

两个例子都给出了相同的结果。 这两个例子只是两种做同样事情的方式吗?或者两者之间存在实际差异?

2 个答案:

答案 0 :(得分:7)

不同之处在于,在第二种情况下,所有实例共享相同的sayHello函数。这样更有效,特别是如果你创建了很多实例。

答案 1 :(得分:2)

原型 方法sayHello由Dog类的所有实例共享,而不是使用 this 在构造函数中为每个实例创建一个新副本,浪费空间和时间。

以下是 运算符在单词中的工作原理:

https://gist.github.com/Havvy/5037770

以下是 运算符如何使用图片:

enter image description here