我在javascript中阅读了关于"new"关键字的主题(JavaScript 中的'new'关键字是什么?).但是,我还在迷雾中; 我们来谈谈这个例子:
var foo = function() {
return {
setA: function(a) {
this.a = a;
},
readA: function() {
console.log(this.a);
}
};
};
Run Code Online (Sandbox Code Playgroud)
现在关于这两段代码是什么:
一:
var bob1 = foo();
bob1.setA(10);
bob1.readA();
Run Code Online (Sandbox Code Playgroud)
二:
var bob2 = new foo();
bob2.setA(10);
bob2.readA();
Run Code Online (Sandbox Code Playgroud)
在我的水平上,我看不出任何差异.那么使用关键字"new"有什么好处呢?
如果你的函数直接返回对象,那么你不需要new运算符。键new的作用远不止这些。
可以说
function Animal(kind, name) {
this.kind = kind;
this.name = name;
}
Animal.prototype.walk = function() {
console.log('Walking');
}
Run Code Online (Sandbox Code Playgroud)
那么你正在做
var animal = new Animal();
Run Code Online (Sandbox Code Playgroud)
Javascript引擎将做以下事情
var o = Object.create(Animal.prototype)
Animal.apply(o, arguments);
return o;
Run Code Online (Sandbox Code Playgroud)
Object.createprototype将进行函数对象的原型继承Animal。所以animal对象将有自己的属性和继承的属性。
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |