2

Servoy JavaScript Framework を使用してServoy Rapid Application Development Tool で開発していますが、プロトタイプにメソッドを追加してオブジェクトを拡張するのが困難です。

通常の JavaScript では、オブジェクトのプロトタイプを拡張してメソッドを追加できます。この手法は、クラスの複数のインスタンスが必要で、各オブジェクトがメモリ内の同じメソッドを再定義したくない場合に、メモリを節約するために使用されます。

Servoy JavaScript フレームワークでこれを実行しようとすると、Servoy がエラーをスローします。これが私のコードです。

// Create the object
function Person(firstname, lastname) { 
    this.firstname = firstname; 
    this.lastname = lastname;
}
Person.prototype.greet = function () {
    application.output('Hello, my name is '+this.firstname);
    return;
}
Person.prototype.stateFullName = function () {
    application.output('My full name is: '+this.firstname+' '+this.lastname);
    return;
}

このコードは Servoy で次のエラーをスローします。

The property greet is undefined for the javascript type Object

このエラーがスローされずに Servoy 環境でプロトタイプを使用してオブジェクトを拡張するにはどうすればよいですか?

4

1 に答える 1

1

Servoy がエラーをスローしないようにするには、すぐに呼び出される関数でエラーをラップし、変数に格納する必要があります。Servoy が JavaScript ファイルを読み取ると、すぐに呼び出された関数を確認して実行し、プロトタイプの変更をメモリに保存します。

コードは次のとおりです。

// Create the object
function Person(firstname, lastname) { 
    this.firstname = firstname; 
    this.lastname = lastname;
}

// Extend prototype to add methods:
var seeMyPersonPrototypeExtensionsServoy = function(){

    Person.prototype = {

        greet: function () { 
            application.output('Hello, my name is '+this.firstname);
            return;
        },

        stateFullName: function() {
            application.output('My full name is: '+this.firstname+' '+this.lastname);
            return;
        }
    };

}();

この方法でプロトタイプ拡張機能をラップしても、Servoy はエラーをスローしなくなりました。

于 2016-02-04T15:04:20.837 に答える