在Javascript中使用或不过度使用原型的最佳实践
我不认为开发者喜欢在JS中使用原型,除非应用程序的规模很大。这是因为他们避免了原型功能的过度使用 有没有比逻辑更简单的写作方法在Javascript中使用或不过度使用原型的最佳实践,javascript,Javascript,我不认为开发者喜欢在JS中使用原型,除非应用程序的规模很大。这是因为他们避免了原型功能的过度使用 有没有比逻辑更简单的写作方法 function Dog (breed) { this.breed = breed; }; Dog.prototype.bark = function() { console.log("Woof"); }; var buddy = new Dog("golden Retriever"); buddy.bark(); var snoopy = new Dog
function Dog (breed) {
this.breed = breed;
};
Dog.prototype.bark = function() {
console.log("Woof");
};
var buddy = new Dog("golden Retriever");
buddy.bark();
var snoopy = new Dog("Beagle");
snoopy.bark();
此模式的优点是提供隐私。方法1
function Dog (breed) {
this.breed = breed;
};
Dog.prototype.bark = function() {
console.log("Woof");
};
优势:
狗
对象,则创建对象的速度会更快,因为吠叫
已在原型中定义,它也将在新对象中设置function Dog (breed) {
this.breed = breed;
this.bark = function() {
console.log(this.breed);
};
};
缺点:
breed
直接添加到对象本身,所以可以通过对象访问它。因此,没有数据保护function Dog (breed) {
this.bark = function() {
console.log(breed);
};
};
优势
breed
,但不能在对象外访问。因此,保护数据你想在这里实现什么?@qantas941使用prototype重写上述代码的更简单方法,当我将dog.prototype.bark放入dog构造函数中时,它可以工作,你知道为什么吗?你的实现很好;最好将共享方法放在原型上,而不是实例上。@elclanrs放在构造函数中不合适吗?但是为什么它能工作并且有相同的结果呢?因为当你向构造函数添加一个函数时,你会将它分别附加到每个实例上。当您将其添加到原型中时,您将与所有实例共享该方法。它不保护树皮,但
繁殖
,但为什么要使用此
?为什么不创建一个新的变量?@theforutheye不是我说的吗?“这种模式的优点是它提供了隐私。”缺点是增加了内存使用量,instanceof
不起作用,深度复制这样的对象不起作用,可能还有更多的事情。为什么要创建一个变量呢?如果要使用闭包,则引用闭包时会捕获breed
作为参数。
function Dog (breed) {
this.bark = function() {
console.log(breed);
};
};