在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();
两个例子都给出了相同的结果。 这两个例子只是两种做同样事情的方式吗?或者两者之间存在实际差异?
答案 0 :(得分:7)
不同之处在于,在第二种情况下,所有实例共享相同的sayHello
函数。这样更有效,特别是如果你创建了很多实例。
答案 1 :(得分:2)
原型 方法sayHello由Dog类的所有实例共享,而不是使用 this 在构造函数中为每个实例创建一个新副本,浪费空间和时间。
以下是 新 运算符在单词中的工作原理:
https://gist.github.com/Havvy/5037770
以下是 新 运算符如何使用图片: