我在Javascript中看到了这两种声明方法的方法:
var User = function() {
this.name = 'Foo';
this.greet = function() {
console.log('Hello!');
}
}
Run Code Online (Sandbox Code Playgroud)
和
var User = function() {
this.name = 'Foo';
}
User.prototype.greet = function() {
console.log('Hello!');
}
Run Code Online (Sandbox Code Playgroud)
有什么区别?
如果您要创建一个“类”,则需要使用第二个。我说类用引号引起来是因为 javascript 没有类的正式概念,因为它使用原型继承。
您在 JS 中创建的每个对象都会从原型继承其属性。在第二个示例中,您创建的每个用户都将从原型中获取方法“greet”。在第一个示例中,每个 User 都会从 User 构造函数中获取greet方法。
第二种方法更优越,因为第一种方法有效地为创建的每个对象创建了“greet”函数的新副本。在第二种方法中,每个 User 对象都有一个指向greet 函数的指针,因此它实际上被解释器重用。请注意,这与说“问候”是静态的不同。
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |