2011-12-12 2 views
1

나는 요즘 그 스크립트를 따라왔다. 그리고 많은 연구가 끝나고 난 여전히 대답을 찾을 수 없었다.Object.prototype을 사용하여 Object 생성자에 함수를 추가하려면 어떻게해야합니까?

그래서 여기에 내가 (원래는 아직이 없기 때문에, 예를 들어) (.length) 객체에 함수를 추가 (예를 들어) 원하는 문제, 나는 시도했다 :

Object.prototype.length = function() { /* Some fancy work */ }; //It works! 

Object.prototype["width"] = function() { /* Some fancy work */ }; //It works! 

/* But the following DOESN'T work */ 
Object.prototype = { 
    length: function() { /* Some fancy work */ }, 
    width: function() { /* Some other fancy work */ } 
}; 

마지막 하나가 작동하지 않습니다. 그게 바로 {} 객체를 사용하여 함수를 추가하는 가장 짧은 방법입니다. 이유가 없습니다. 나는 (예를 들어 jQuery 1.7.1에서) 그 코드를 보았습니다. 어떻게 동작하는지 알기 위해 노력했지만 저에게는 효과가 없습니다. jQuery가 사용하기 때문에 어떻게 든 작동해야한다고 생각합니다. 어떻게 보여 주시겠습니까?

a = { 
    b: "Something", 
    c: function() {} 
} 

그리고 다른 사람이 사용 :

a.prototype = { 
    b: "Something", 
    c: function() {} 
} 

그래서 차이점은 무엇입니까

나는 그 코드를 사용하여 많은 사람들을 본 적이? 이것은 어떻게 든 첫 번째 질문과 관련이 있으므로 완전히 이해하고 싶습니다. 당신이 내장 된 개체의 기능에만 두 가지 방법으로 전체를 대체하기 위해 노력하고 있기 때문에

+0

SO의 각 게시물은 질문입니다. 한 번에 _ 질문을 쓰고 3을 하나로 묶지 마십시오. 9 개월 후에 이것을 알아야합니다! –

+0

나는 세 번째 질문을 즉시 취할 것입니다. 상기시켜 주셔서 감사 드리며 죄송합니다. [x] – xx3004

답변

1

1) 당신은

Object.prototype = { 
    length: function() { /* Some fancy work */ }, 
    width: function() { /* Some other fancy work */ } 
}; 

을 사용할 수 없습니다. 이것은 전체 시스템을 망칠 것입니다.

2) Object.method()은 다른 언어의 정적 메서드와 유사합니다. 그것은 가상 클래스가 소유하고 있으며 모든 인스턴스가 아닙니다. 동시에 Object.prototype.method는 일반적인 방법으로 필드 또는 아날로그 관련이 있습니다. 인스턴스를 사용하여 액세스 만 가능합니다.

3) 개체 생성시 발생하는 자동 기능은 Object입니다. 이 객체는 내장 객체이므로 수정할 수 없습니다.

+0

안녕하세요 bjornd, 빠른 답장을 보내 주셔서 감사합니다. 첫 번째 질문에 대해서는 지금 완전히 명확합니다. Object()의 전체 시스템을 대체한다는 사실에 주목하지 않았습니다. 어쨌든 각 Object.prototype.Name을 반복하지 않고 속성을 추가 할 것인지 묻고 싶습니다. 정적 메서드 및 아날로그 메서드에 대한 예제가 더 있거나 기사가 많은 도움이 될 것입니다. 그리고 세 번째 질문에 대해서는 아니오, 주변에서 일할 길이 없다는 것을 의미합니다. 맞습니까? [엑스] – xx3004

관련 문제