2014-02-13 3 views
0

SAP UI5 프레임 워크를 사용하고 있습니다. 나는 클래스의 인스턴스를 생성하고 클래스의 생성자를 변경하려고한다. 클래스의 두 번째 인스턴스를 만드는 동안 새 구성자가 호출되지 않습니다! 여기 javascript 클래스의 생성자가 변경되었지만 새 생성자가 호출되지 않습니다?

var myConstructor = function(){ 
    alert('my own constructor'); 
} 
var btn = new sap.m.Button({text:'Hello World'}) //sap.m.Button is a class 
sap.m.Button.prototype.constructor = myConstructor; //Changing the constrcutor 
var btn2 = new sap.m.Button({text:'h'}); // why myConstructor aint called ! 

는 작업 예를 http://jsbin.com/voluc/2/edit

감사

+0

'var btn2 = new btn.constructor ({text : 'h'})' – elclanrs

답변

2

당신은 실제로 당신은 단순히 사용되는 속성을 변경하고이

sap.m.Button.prototype.constructor = myConstructor; 

를 수행하여 생성자를 변경하지 않을 것입니다 프로토 타입에 의해 생성자 함수를 다시 참조 할 수 있습니다. 완전히 당신은 단순히 필요가 생성자 변경하려면

당신이 그렇게 할 이유가

sap.m.Button = myConstructor; 

아직 모르겠어요 재 - 할당합니다. 임시로 생성자를 변경하려면 먼저 생성자를 저장 한 다음 초기 버전으로 다시 설정할 수 있습니다.

var oldCtor = sap.m.Button; 
sap.m.Button = = myConstructor; 
// finished doing your tasks 
sap.m.Button = oldCtor; 
1

기본 생성자를 변경하면 개체 동작에 영향을 줄 수 있으므로 그렇게하지 마십시오.

<script> 
    var myConstructor = function(){ 
     alert('my own constructor'); 
    } 
    var btn = new sap.m.Button({text:'Hello World'}) 
    btn.placeAt('content'); 
    sap.m.Button = myConstructor; //Changing the constrcutor 
    var btn2 = new sap.m.Button({text:'h'}); // why myConstructor ain't called ! 

    console.log(sap.m.Button.constructor) 
    //but if you see i doh't write btn2.placeAt("content") because of your constructor don't do many things as need 


</script>