这是一个看起来很熟悉的简单类。
var Cat = function () {
this.speak = function() {
return "meow";
};
};
但是,我经常看到这样写
var Dog = function() {
var api = {};
api.speak = function() {
return "bark";
};
return api;
};
它们都被实例化并以相同的方式使用。
var garfield = new Cat();
console.log(garfield.speak());
var odie = new Dog();
console.log(odie.speak());
那么,使用Dog方法的好处是什么?
没有什么。在两种情况下,您都以错误的方式进行操作。
现在发生的事情是,每当实例化一个对象时,都会添加一个变量Object,并使用其自己的方法来实例化每个对象。
用狗的方式将对象内的功能对象添加到变量。甚至需要更多的内存。
做到这一点的最佳方法如下,以确保所有Dog都具有相同的语音功能,从而减少了内存消耗
function Dog(bark) {
this.bark = bark;
}
Dog.prototype.speak = function() {
console.log(this.bark);
}
var odie = new Dog("yip yip");
var bully = new Dog("WOOF!");
odie.speak();
bully.speak();
这样,语音功能只占用两只狗的一块内存。两者都使用完全相同的功能说话。在您的记忆中,您现在拥有:
在您的示例中,两只狗都会
两只狗的记忆力问题可能会被忽略。但是,如果您有10.000条狗,这将成为一个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句