3
我對Ecma-Script-6模板常量有以下代碼。在Ecma-Script-6中定義對象爲常量
const person = 'John Smith';
console.log(person);
person = 'Naeem Shaikh';
console.log("{{After changing the value for person.name}}");
console.log(person);
當然不起作用。 http://www.es6fiddle.net/i3vhumdx/它提供了以下錯誤,
person is read-only
現在我做的對象同樣的事情。
const person = {name: 'John Smith'};
console.log(JSON.stringify(person));
person.name='Naeem Shaikh';
person.age="24";
console.log("{{After changing the value for person.name}}");
console.log(JSON.stringify(person));
http://www.es6fiddle.net/i3vhzblm/
輸出是:
{"name":"John Smith"}
{{After changing the value for person.name}}
{"name":"Naeem Shaikh","age":"30"}
在這裏我能夠寫入只讀對象沒有任何問題。任何人都可以解釋此行爲。
http://www.es6fiddle.net/i3vi7or9/我沒有改變這個參考在這個小提琴的權利?但它的工作原理類似於一個常量 – 2014-12-19 12:01:15
您爲person變量指定一個新值:嘗試使其引用另一個對象。 – 2014-12-19 12:02:31
好吧,所以'reference'和'freeze'是這裏的關鍵詞。具有參考值對象的Bcoz會表現爲一個常數有點不同,爲了克服它,我們應該凍結它。我現在明白嗎? – 2014-12-19 12:06:55