2011-11-09 10 views
4

의 문자열 프로토 타입을 확장 할 수 없습니다 내가나는 여기에 자바 스크립트

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

아래의 오류가이 페이지를 열 때 나는 이유를 알아낼 수 없습니다 코드

<script> 

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

alert(String.testthing()); 

</script> 

이다. 나는 배열 프로토 타입을 아무런 문제없이 확장했다.

+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 둘 다 작동합니다 (그러나 diff 결과를 생성합니다). 나는 OP의 의도를 확신하지 못했지만 그것을하기위한 한 가지 방법을 보여주고 싶었습니다. – JaredPar

+0

@ JaredPar String.prototype.customMethod와 같은 일을하는 것은 나쁜 습관이라고 생각합니까? 그렇다면 왜? – FNMT8L9IN82

관련 문제