在主题中,当我们定义未来对象时(例如):
function Person(name) {
this.sayName = function() {
console.log(this.name);
};
}
Person.prototype.sayName = function() {
console.log(this.name);
};
这两种方法都可用于新创建的对象。唯一的区别是'this'表达式将为每个实例创建此方法,并且'prototype'将在内存中共享(据我所知)。我遇到了两个表达方式,有趣的是第一个表达式比第二个表达式更受欢迎。
我的问题是......第一次或第二次JavaScript的正确方法是什么? (我知道两者都有效,但......代码工程标准是什么以及为什么)。
答案 0 :(得分:1)
正确的方法是第二个(你还需要什么样的原型?)。
第一种方法的优点是能够获得类似私有变量的东西:如果在构造函数(function Person
)中声明局部变量,那么您将能够在sayName
方法中使用它因为closures。而这个变量将无法从你的“课堂”中获取。