2011-12-08 5 views
0

내가하고 싶은 것을 설명하는 정확한 단어를 모르지만 기능은 PHP 클래스의 __get() 함수를 재정의하는 것과 매우 유사합니다. 예를 들어 이것은 내가하고 싶은 것입니다.자바 스크립트 동적 객체

var obj = { 
    param1:'a', 

    func1:function(){ return '1';}, 

    catch_all:function(input){ 
     return input; 
    } 
} 

//alerts 'a' 
alert(obj.param1); 

//alerts '1' 
alert(obj.func1()); 

//alerts 'anything' 
alert(obj.anything); 

기본적으로 사용되지 않은 키를 미리 정의 된 키로 리디렉션하고 싶습니다. 나는 이것에 대한 연구를 해본 결과 무엇을 검색해야할지 몰랐다. 어떤 도움이라도 대단히 감사합니다. 감사.

+0

항목 : http://stackoverflow.com/questions/2266789/is-there-an-equivalent-of-the-nosuchmethod-feature-for-properties-or-a-way/3757676#3757676 – CMS

답변

2

이 현재 자바 스크립트 구현과 불가능합니다. ObjC 또는 다른 언어에서 사용하는 기본 getter는 없습니다.

2

get 기능을 만들 수 있지만 그 외에는 의도 한대로 할 수 없습니다.

get 함수 :

var obj = { 
    param1:'a', 

    func1:function(){ return '1';}, 

    get: function(input){ 
     return this[input] !== undefined ? this[input] : 'ERROR'; 
    } 
} 

//alerts 'a' 
alert(obj.param1); 

//alerts '1' 
alert(obj.func1()); 

//alerts 'ERROR' 
alert(obj.get('anything')); 

바이올린 : http://jsfiddle.net/maniator/T2gWx/

1

get 메소드의 코드에서 변경된 사항을 찾을 수 있습니다. objparam1으로 메모리 값 참조를 수정할 수 있습니다.

var obj = { 
    param1:'a', 

    func1:function(){ return '1';}, 

    get: function(input){ 
     this.param1 = input; 
     return input; 
    } 
} 

//alerts 'a' 
alert(obj.param1); 

//alerts '1' 
alert(obj.func1()); 


//alerts 'anything' 
alert(obj.param1); 
+0

감사합니다. 이것은 유용했습니다. +1 – kss