2011-11-09 31 views
4

延長字符串原型下面是代碼我不能在JavaScript

<script> 

String.prototype.testthing = function() { 
    return "working"; 
} 

alert(String.testthing()); 

</script> 

當我打開這個網頁,我得到以下

Uncaught TypeError: Object function String() { [native code] } has no method 'testthing' 

錯誤我想不出爲什麼。我已經擴展了Array原型而沒有問題。

+2

好了,'字符串!== String.prototype'原型。 –

+2

更重要的是(IMO),'Object.getPrototypeOf(String)!== String.prototype'。 – ephemient

回答

18

您正確顯示的代碼擴展了String原型。但是,您嘗試調用String.testthing函數的方法,而不是string實例。

alert("".testthing()); // "displays 'working' 

如果你真的想取消這次String構建的方法,那麼你需要延長Function

Function.prototype.testthing = function() { 
    return "working"; 
} 
alert(String.testthing()); 
+0

爲什麼你分配給'Function.prototype'而不是'String.testthing = ...'? – clockworkgeek

+0

@clockworkgeek都會工作(但會產生差異結果)。我不確定OP的意圖,但想演示一種做法。 – JaredPar

+0

@JaredPar是否認爲做不如String.prototype.customMethod這樣的事情?如果是這樣,爲什麼? – FNMT8L9IN82