2014-03-05 88 views
0

這只是爲了實驗。以下代碼似乎無法將Object.prototype更改爲null。javascript改變Object.prototype不起作用

Object.prototype = null; 
var o = new Object(); 

這是因爲它是'對象'還是內置類型?我想我們可以改變它爲用戶定義的類型。很抱歉,如果我錯了

+3

這是一件壞事嗎?但是問題是什麼?爲什麼只讀? –

+0

只是好奇爲什麼。我的新價值在哪裏?只是安靜地忽略。如果您認爲不正確,請提供例外或錯誤。 – leon

+1

http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.1,因爲規範是這樣說的。這就是爲什麼。 – rlemon

回答

2

從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}。