iT邦幫忙

0

Javascript declare object without new Object

deh 2021-11-02 17:11:51776 瀏覽
  • 分享至 

  • xImage

各位前輩好,想請教以下兩種物件宣告方式有什麼不同嗎?

const obj = {
    Read: 'Read',
    Create: false
}
const obj = new Object({
    Read: 'Read',
    Create: false
})
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
Mao
iT邦研究生 5 級 ‧ 2021-11-02 17:31:03
最佳解答

對於 obj 變數來說,沒有什麼不同。
對於 JavaScript 來說,使用字面宣告的效能會比使用 new Object() 來的好

deh iT邦研究生 1 級 ‧ 2021-11-03 13:48:05 檢舉

測試了一下,意外的效能確實比較好

const iterations = 1000000

console.time('Function No New')
for (var i = 0; i < iterations; i++) {
    (() => {
        const obj = {
            Read: 'Read',
            Create: false
        }
        return obj
    })()
}
console.timeEnd('Function No New')

console.time('Function New')
for (var i = 0; i < iterations; i++) {
    (() => {
        const obj = new Object({
            Read: 'Read',
            Create: false
        })
        return obj
    })()
}
console.timeEnd('Function New')
3

兩者是相同的。
但一般初始化值來說還是用第一種方式。

new 宣告的方式常用在暫存式或是臨時性的變數上。
或是不確定的屬性賦值的情況下。
會先用

obj = new Object();

來處理。

javascript 建立 Object的方法有很多種。

function Car(make, model, year, owner) {
  this.make = make;
  this.model = model;
  this.year = year;
  this.owner = owner;
}
var car1 = new Car('Eagle', 'Talon TSi', 1993, rand);

另外還有的是

var Animal = {
  type: 'Invertebrates', // Default value of properties
  displayType: function() {  // Method which will display type of Animal
    console.log(this.type);
  }
};
var animal1 = Object.create(Animal);

不過就單純 const 常數定義來說。基本給值就可以了。

我要發表回答

立即登入回答