0

SAP UI5 フレームワークを使用しています。クラスのインスタンスを作成してから、クラスのコンストラクターを変更しています。クラスの 2 番目のインスタンスを作成している間、新しいコンストラクターは呼び出されません!

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

ありがとう

4

2 に答える 2

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;
于 2014-02-13T10:12:56.653 に答える
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>
于 2014-02-13T10:13:24.407 に答える