2010-02-08 7 views
2

궁금 해서요?방지 기능은 동적으로 자바 스크립트 OOP는

편집 : 나는이 포기하는 단지에 대한,하지만 나는 그들이이를 어떻게 .. 신들이 (jQuery를 dev에 팀) 무엇을 확인하기로 결정? 당신이 할 경우 어리석은 실수 .. : :

$('#Jimbo').hello = "hi!"; 
alert($('#Jimbo').hello); // undefined 

EDIT 2

var hi = $('#Jimbo'); 
hi.hello = "hi!"; 
alert(hi.hello); // You get "hi!" 

감사합니다, 매트 뮬러

+2

당신이 정의되지 않은 '받을 이유 후있어 정확히 무엇 때문에 당신이 $ 호출 할 때 생성되는 객체 ('#Jimbo')는 두 번째 줄에 도착할 때까지 파괴됩니다. 변수에 $ ('# Jimbo')를 할당하고 두 번째 행에서 변수를 참조한 다음 어떤 일이 발생하는지 확인하십시오. – Josiah

+0

Ahhh 좋은 전화 .. 어리석은 실수. 감사! – Matt

답변

4

없음이되지 않습니다. Javascript를 사용하면 구성원을 동적으로 추가 할 수 있으며이를 막을 수 있습니다.

+0

Aww .. 답변 해 주셔서 감사합니다. – Matt

2

내가 아는 한 (그리고 나는 틀릴 수도있다.) 이것을 막을 방법이 없다. 누군가가 오타를 만들거나 다음 삶 그게 임의의 필드를 추가하면 ...는 '동적'언어를 가지고있는 점 ...

+0

너무 나빠요. 귀하의 회신에 감사드립니다! – Matt

2

인 ECMAScript 5는 당신의 소중한 객체에 추가되는 새 속성을 방지 할 수 있습니다 Object.preventExtensions를 정의 :

var c = new Circle(4); 
Object.preventExtensions(c); // prevents new property additions on c 
c.garbage = "Oh nooo!"; // fail 

투기도 Object.seal을 정의하고, 속성 및 속성 결실 돌연변이를 (각각) 방지 Object.freeze. 더 많은 정보 hereECMA-262, 5th edition (pdf). 물론

,이 모든 당신없이 현재의 의미입니다,하지만 당신은 :)

+0

재미있는 오! 나는 전체 EMCAScript 물건으로 아니지만 자바 스크립트 인터프리터에 대한 새로운 사양인가? – Matt

+0

@Matt : 예, JavaScript 엔진은 ECMAScript 5의 기능을 통합 할 예정입니다. 내가 아는 공용 ECMAScript 5 구현은 없습니다. –

+1

Chrome에서 현재 작동하는 것을 모두에게 알리려면 int를 chiming하세요. 버전 25.0.1364.152 m – VoronoiPotato

관련 문제