Jye*_*wis 6 javascript node.js
在javascript之间创建对象有什么不同
test = function(a, b){
this.calculate = function(){
return a + b;
}
}
obj = new test(1, 2);
console.log(obj.calculate());
Run Code Online (Sandbox Code Playgroud)
和
test = function(a, b){
return {
calculate: function(){
return a + b;
}
}
}
obj = test(1, 2);
console.log(obj.calculate());
Run Code Online (Sandbox Code Playgroud)
我已经在不同的情况下使用了两种,但从来没有理解它们的区别,我知道后一种方法有为实例创建函数的头脑,但仍然看到它在很多情况下都使用过,有人可以为我提出这个问题吗?我无法通过搜索找到任何相关信息
第一个也为每个实例创建函数.这种情况的唯一区别是新实例继承自test.prototype第一种情况,而它直接继承自Object第二种情况.
在第一种情况下,通过将函数添加到原型,让实例共享代码会更容易.例如:
var Test = function(a, b){
this._a = a;
this._b = b;
};
Test.prototype.calculate = function(){
return this._a + this._b;
};
Run Code Online (Sandbox Code Playgroud)
由于所有实例都继承自Test.prototype,因此该calculate函数仅存在一次,并且所有实例都引用相同的函数.
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |