我看到两种向Class添加属性的方法。
我想知道它们之间的区别。以下是代码和 JsBin
var show = function() {
console.log('Show started..');
// Adding properties in constructor
this.properties = {
name: 'Testing javascript'
};
};
show.prototype.getName = function() {
console.log(this.properties.name);
};
// Adding properties to prototype
show.prototype.properties = {
name: 'Testing prototype'
};
var myShow = new show();
myShow.getName();
答案 0 :(得分:3)
原型的成员将为所有实例共享:
var Person=function(name){
this.obj.name=name;
};
Person.prototype.obj={name:"Default"};
var ben = new Person("Ben");
var leo = new Person("Leo");
console.log(ben.obj.name);//logs Leo
在上面的代码中,ben和leo共享obj
成员。行为(=函数)通常放在原型上,因为它们不会因实例而改变。在原型上使用它将节省初始化和内存,因为无论您在原型上创建函数的实例数只存在一次。
在构造函数体中使用this.someProp=...
声明的成员是特定于实例的。
有关构造函数和原型的更多信息,您可以查看this answer。