2014-10-29 74 views
0

如果你想創建一個對象,它是獨特的,是唯一的實例什麼是最好的使用方法:使用Javascript - 新功能(){...} VS {}

var obj = new function() { 
    this.x = 200; 
    this.y = 100; 
}; 

var obj = { 
    x: 200, 
    y: 100 
}; 

AFAIK的新的好處是,你可以做的事情,如:

var obj = new function() { 
    this.x = 300; 
    this.y = x - 50 
}; 

,你不能用:

var obj = { 
    x: 300, 
    y: x - 50 // undefined 
} 

???

+2

使用對象文字。 – 2014-10-29 19:13:52

+0

你可以在對象之外聲明'x'和'y'。最後一個例子中的表達式就會起作用。 – Renan 2014-10-29 19:14:45

+0

旁邊的重複問題請參閱[自引用對象字面聲明](https://stackoverflow.com/q/4616202/1048572) – Bergi 2014-10-29 19:22:56

回答

2

這種情況怎麼樣?

var obj = { 
    init: function() { 
    this.x = 300; 
    this.y = this.x - 50; 
    return this; 
    } 
}.init(); 
+0

很酷,我從來沒有想過這樣的事情,所以你可以說它是更好,然後因爲它支持早期版本的JS,它不支持'new'運算符,但速度更快嗎? – super 2014-10-29 19:20:08

+0

@Murplyx比什麼快?你使用它幾千次?我不認爲這種差別會非常顯着。 – Cheery 2014-10-29 19:21:03

+0

@Murplyx:沒有不支持'new'的js版本。但'new'與你想象的完全不同(對象中的'init'方法就像這個答案是類似的,但至少是顯式的) – Bergi 2014-10-29 19:24:22