簡體   English   中英

javascript 對象方法中的新構造函數

[英]new constructors in javascript object methods

嘿,我只是在尋找一個 javascript 解釋來解釋為什么“被調用的構造函數”只被調用一次而不是 5 次?

const Dog = function(name, age){
  this.name = name; 
  this.age = age; 
  console.log('constructor called'); 
}
const obj = { 
  dog: new Dog('roofus', 20)
}
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 }

您在名為dog的對象上聲明了一個屬性,表達式new Dog(...)立即被評估。 這就是為什么您只看到一個日志的原因,因為構造函數只被調用一次。

這是一個會調用構造函數 5 次的版本:

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())
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM