javascript对象方法中的新构造函数
嘿,我只是想找一个javascript解释来解释为什么“构造函数调用”只调用一次而不是5次javascript对象方法中的新构造函数,javascript,object,methods,constructor,new-operator,Javascript,Object,Methods,Constructor,New Operator,嘿,我只是想找一个javascript解释来解释为什么“构造函数调用”只调用一次而不是5次 const Dog = function(name, age){ this.name = name; this.age = age; console.log('constructor called'); } 在名为dog的对象上声明一个属性,表达式newdog(…)将立即求值。这就是为什么您只看到一个日志,因为构造函数只被调用一次 此版本将调用构造函数5次: const obj = {
const Dog = function(name, age){
this.name = name;
this.age = age;
console.log('constructor called');
}
在名为
dog
的对象上声明一个属性,表达式newdog(…)
将立即求值。这就是为什么您只看到一个日志,因为构造函数只被调用一次
此版本将调用构造函数5次:
const obj = {
// Notice the use of a function here.
dog: () => new Dog('roofus', 20)
}
for(设i=0;i<5;i++){
//在这里调用函数。
console.log(obj.dog())
}
你认为为什么狗会被叫来5次?您创建的实例被记录了5次,但是当您定义obj
时,new Dog()
只被调用一次。这是因为new关键字立即在obj内执行构造函数吗?@Rez88正确:o
const main = ()=>{
for(let i = 0; i < 5; i++){
console.log(obj.dog)
}
}
main();
'constructor called'
Dog { name: 'roofus', age: 20 }
Dog { name: 'roofus', age: 20 }
Dog { name: 'roofus', age: 20 }
Dog { name: 'roofus', age: 20 }
Dog { name: 'roofus', age: 20 }
const obj = {
// Notice the use of a function here.
dog: () => new Dog('roofus', 20)
}
for(let i = 0; i < 5; i++){
// Call the function here.
console.log(obj.dog())
}