向构造函数或原型添加属性之间的区别
Difference between adding properties to constructor or prototype
我看到了向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();
所有实例的原型成员都是共享的:
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=...
的构造函数函数体中声明的成员是特定于实例的。
有关构造函数函数和原型的更多信息,你可以查看这个答案。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- webpack开发模式和生产构建模式之间有什么区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 布局引擎和javascript引擎之间的区别
- 什么's extjs中的mon()和on()之间的区别
- type=text/javascript和language=javascript之间的区别
- 函数()和新函数()之间的区别
- JavaScript中let和var之间的区别
- 蓝鸟的done()和spread()之间的区别
- Node.js HTTP/NET——连接和请求之间的区别