使用對象文字和使用構造函數創建對象(理論上)以及何時使用它們之間的區別是什麼?Object Literals - Vs - 構造函數
我不是指我們如何使用它們。我的意思是他們如何在幕後工作,以及他們的機制如何不同!
使用對象文字和使用構造函數創建對象(理論上)以及何時使用它們之間的區別是什麼?Object Literals - Vs - 構造函數
我不是指我們如何使用它們。我的意思是他們如何在幕後工作,以及他們的機制如何不同!
基本上 - 在ES2015之前 - 使用對象文字創建對象時,您無法向對象添加方法。
由於ES2015的是可以添加的方法來反對文字,這使得對象文字和類聲明八九不離十:
var obj = {
// __proto__
__proto__: theProtoObj,
// Shorthand for ‘handler: handler’
handler,
// Methods
toString() {
// Super calls
return 'd ' + super.toString();
},
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42
};
另一個重要的事情是,當你想創建一個類的實例 - 你會想要基於該類聲明創建類聲明和初始化對象。
很高興指出ECMAScript 2015中引入的功能,大部分副本都有點舊。對象初始值設定項的附加功能也包含在[* MDN *](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer)中。儘管謹慎使用'__proto__',它是[* ECMA-262 *附錄]中的擴展(http://ecma-international.org/ecma-262/8.0/#sec-__proto__-property-names-在-對象初始化)。 – RobG
有[許多重複](https://stackoverflow.com/search?q=%5Bjavascript%5D+literal+vs+constructor)。 – RobG
我不是在說如何使用它們。我正在談論當我使用他們兩個時在js幕後發生的事情。我問我的問題,因爲我發現沒有其他問題是爲了我要找的點... 所以我的問題不是重複的! –
如果您想回答問題,則編輯該問題。 –