這只是爲了實驗。以下代碼似乎無法將Object.prototype更改爲null。javascript改變Object.prototype不起作用
Object.prototype = null;
var o = new Object();
這是因爲它是'對象'還是內置類型?我想我們可以改變它爲用戶定義的類型。很抱歉,如果我錯了
這只是爲了實驗。以下代碼似乎無法將Object.prototype更改爲null。javascript改變Object.prototype不起作用
Object.prototype = null;
var o = new Object();
這是因爲它是'對象'還是內置類型?我想我們可以改變它爲用戶定義的類型。很抱歉,如果我錯了
從MSDN
一些更多的信息在這裏:http://msdn.microsoft.com/en-us/library/f5s9ycex(v=vs.94).aspx
所有固有的JavaScript對象都有一個原型屬性,是 只讀。屬性和方法可能會添加到原型中,但對象可能不會被分配到不同的原型。但是,用戶定義的對象可能會被分配一個新的原型。該語言引用 中的每個內部對象的方法和 屬性列表指示哪些是對象原型的一部分,哪些不是 。
從規範
一些更多的信息在這裏:http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.1
15.2.3.1 Object.prototype中
Object.prototype中的初始值是內置對象 標準原型對象(15.2.4)。
此屬性具有屬性{[[Writable]]:false,[[Enumerable]]: false,[[Configurable]]:false}。
此屬性具有屬性{[[可寫]]:假,[可枚舉]]: 假,[[配置]]:假}。
和8.6.1 Property Attributes具有這樣說[[Writable]]
:
如果是假,通過的ECMAScript代碼嘗試使用[將]將不會成功更改屬性的 [超值]屬性。
這是一件壞事嗎?但是問題是什麼?爲什麼只讀? –
只是好奇爲什麼。我的新價值在哪裏?只是安靜地忽略。如果您認爲不正確,請提供例外或錯誤。 – leon
http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.1,因爲規範是這樣說的。這就是爲什麼。 – rlemon