2010-07-31 1 views
0

__defineSetter__은 (는) 더 이상 파이어 폭스 최신 버전에서 작동하지 않습니다. Chrome에서 작동합니다.__defineSetter__ firefox 3.5.x 이상 대체

같은 기능을 수행하며 IE, Opera, Safari와 같은 다른 브라우저에서도 작동하는 대체 기능이 있습니까?

+0

Works On My Machine ™ –

답변

8

__defineGetter____defineSetter__은 최신 Firefox에 있으며 나는 단기적으로 제거 할 계획이 없다고 생각합니다. 장기적으로, ECMAScript 5는 getters와 setter의 다른 형태를 지정하여 결국 모든 브라우저에 적용됩니다.

다음은 ECMAScript 5 getter 및 setter의 예입니다. 현재 IE 9, Chrome 5, Safari 5에서 작동합니다 (호환성 표는 here 참조).

var o = {}; 
Object.defineProperty(o, "p", { 
    get: function() { 
     return "A property"; 
    }, 
    set: function(val) { 
     alert("Setting " + val + "!"); 
    } 
}); 

편집

, 여기에 요청, 위의 ES5 코드에 해당 __defineGetter____defineSetter__의 작업 예제로서 :

var o = {}; 
o.__defineGetter__("p", function() { 
    return "A property"; 
}); 
o.__defineSetter__("p", function(val) { 
    alert("Setting " + val + "!"); 
}); 
+0

__defineGetter__ 및 __defineSetter__에 대한 작업 예제를 제공 할 수 있습니까? – jack

+1

완료 ........... –

0

파이어 폭스 당신은 "보고"를 사용한다 방법 .

if(Object.prototype.watch){ 
    instance.watch("property", function(id, prevValue, newValue){ 

      //do operaions here on the value --- 

     return newValue 
    } 
} 

... 여기서 instance는 개체이고 속성은 변경 내용을보고 싶은 실제 속성입니다.

관련 문제