这是一个看起来很熟悉的简单类。
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方式有什么好处?
答案 0 :(得分:7)
无。在这两种情况下你都是错误的做法。
现在发生的事情是,每次实例化一个对象时,都会添加一个变量Object,并使用自己的方法对每个对象进行实例化。
在Dog方式中,您将Object中的Function对象添加到变量中。记忆力更强。
执行此操作的最佳方法如下,这可确保所有Dogs具有相同的说话功能,从而节省更少的内存
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();
这样,说话功能只占两只狗的一块记忆。两者都使用完全相同的功能来说话。 在你的记忆中,你现在拥有:
在你的例子中,两只狗都有