我已经使用JavaScript很长一段时间了,而且我经常使用对象,但我总是想知道什么时候需要使用原型!!如果我需要一个对象的新方法,我只需编辑该对象并添加该方法,在大多数情况下,我知道在创建对象时需要哪些属性和方法。
我在原型中播种的有益之处,我可以使对象继承自另一个:
var Person = function(firstname,lastname) {
this.first_name = firstname;
this.last_name = lastname;
};
var employee = function(name) {
this.name = name;
};
employee.prototype = new Person();
什么时候我真的需要使用原型或什么是使用原型的最佳案例?
此致
答案 0 :(得分:3)
只有两个常见用例:
1)更快地创建实例
如果您正在使用构造函数来创建对象,则可以直接在此构造函数中添加方法:
var Person = function(firstname,lastname) {
this.first_name = firstname;
this.last_name = lastname;
this.sayName = function () {
alert("Hi, my name is " + this.first_name + " " + this.last_name);
};
};
然而,这样做的缺点是,将为每个实例创建函数,这需要额外的时间。将方法添加到原型将加速实例的创建,因为该函数只需定义一次:
var Person = function(firstname,lastname) {
this.first_name = firstname;
this.last_name = lastname;
};
Person.prototype.sayName = function () {
alert("Hi, my name is " + this.first_name + " " + this.last_name);
};
2)扩展对象
使用prototype
扩展内置(或自定义)对象。例如:
Array.prototype.forEach = function (callback) {
for (var i = 0; i < this.length; i++) {
callback(this[i], i);
}
};
var arr = [1,2,3,4];
arr.forEach(function(item, index) {
console.log(item);
});
这使您还可以覆盖原型上定义的函数并影响所有创建的实例。
答案 1 :(得分:2)
如果我需要一个对象的新方法,我就去编辑那个对象 添加该方法,在大多数情况下,我知道什么属性和方法 我在创建对象时需要的。
使用原型的一个好处是它允许方法共享。如果对象A
和B
具有相同的原型,则将函数C
添加到其原型将允许A
和B
访问该函数。
这样,您无需编辑对象即可添加新方法。因此,更少的代码重复和更高的内存效率。