JavaScript에 대한 몇 권의 책을 읽었으며 OOP를 사용하여 웹 응용 프로그램을 작성하는 데 매우 강력한 언어입니다. 그러나 지금은 문제가 있습니다. 해결할 수 있습니다Object.defineProperty 및 해당 '가져 오기'기능 사용
var myObj = {};
myObj.properties = {};
myObj.properties.myProperty = 'foo';
가 설명해 드리죠, 내가 foo
을 얻을 것이다 내가 myObj.properties.myProperty
에 대한 을 요구하는 경우 지금은, 지금 ... 내부 properties
객체를 살고 있고 .. myObj
있습니다. 그러나 myObj.properties.notSettedValue
을 요청하면 어떻게됩니까? (즉, undefined
)
나는 속성에 setter와 getter를 설정할 수있는 MDN에 대해 Object.defineProperty
을 읽었습니다.
myObj.properties
Object.defineProperty(myObj, 'properties', {
get : function(){
console.log("called custom get property.", this, arguments);
}
});
에 "get"
값을 설정하려고 ...하지만 아무는 get
기능은 자체에 대한 myObj.properties
일을 선언하지 않습니다. 사용자 정의 함수는 myObj.properties
을 요청한 경우에만 호출됩니다. 그것의 아이들을 위해 아닙니다.
요청한 myObj.properties.notSettedValue
을 get
기능에 전달하는 해결책은 myObj.properties
입니까?
나는 의심 스럽다. 자바 스크립트에는 몇 가지 "마법"기능이 있지만 모든 것이 현재 가능하지는 않다. ES3에서 ES5로 10 년 이상이 경과했다 ... ES6을 몇 번이나 기다릴 것인가? ? ... – Salcos
@Salcos :별로 오래 있지 않아, 나는 기쁜 듯이 말하고있다. 관련 사람들이 함께 행동합니다. 최신 [ES6의 사양 초안] (http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts)을 볼 수 있습니다.나는 2014 년에 완결 될 것이라고 생각하지 않지만, 2015 년에 그럴 것이라고 생각한다. 5.0 년 이후 약 6 년이고 5.1 년 이후 4 년이다. 그러나 ES6는 ES5에 비해 * 큰 변화 *입니다. –