2013-01-25 2 views
1

다른 파일 j에서 함수 길이를 재정의하려면 어떻게해야합니까?자바 스크립트는 함수를 재정의 할 수 없습니다.

jQuery(function ($) {  

    $.fn.normal_text = function (text) { 

      $.fn.normal_text.length = function(){ 
       ... 
      } 

     } 

} 

나는이 시도 :

$(document).ready(function(){ 
    $.fn.normal_text.length = function(){ alert('123'); } 
}); 

을하지만 하겠어

+1

속성이 봉인되었거나 동결되었을 수 있습니다. 또한 해당 과제가 끝나면 세미콜론이 누락되었다고 지적 할 수 있습니다. –

+0

나는 이해할 수 없다. 당신은 분명히 쓸 수 있습니까? 감사합니다 –

+0

더글러스 Crockford의 업적을 연구하여 어떻게해야하는지 더 잘 이해해야합니다. 이 질문에 정확히 대답하기는 어렵습니다. 왜냐하면 당신이하고자하는 일이 명확하지 않기 때문입니다. –

답변

1

normal_text 함수, 당신은 그것을 무시할 수 없습니다 있도록 개체가 속성의 아닌 그것으로 미친 것 같지 .

3

읽기 전용 내장 함수이기 때문에 함수의 length 속성을 재정의 할 수 없습니다. 언어 사양의 "기능 인스턴스의 속성"에서

:

15.3.5.1 length

길이 속성의 값은 함수에 의해 예상되는 인수의 "전형적인"수를 나타내는 정수입니다. 그러나이 언어는 함수가 다른 수의 인수로 호출되도록합니다. 길이 속성에 의해 지정된 수 이외의 많은 인수에서 호출 될 때 함수의 동작은 함수에 따라 다릅니다. 이 속성은 속성 ,[[Enumerable]]:false,[[Configurable]]:false}[[Writable]]:false{ 있습니다.

굵게 표시된 부분은 함수 인스턴스의 length 속성에 쓸 수 없다고 설명합니다.

+0

@ Peter_175 이것은 내가 첫 번째 발언에서 지적한 것입니다. –

+0

그래서 어떻게 기능을 편집하기 전에 코드를 바꿀 수 있습니까? –

+1

@RyanSmith, "봉인되었거나 동결 될 수 있습니다"는 스펙의 관련 부분을 인용하는 것과는 완전히 다릅니다. –

관련 문제