0

JavaScript プロトタイピングが関係するところに足を踏み入れたばかりで、問題が発生しています。

プロトタイプ オブジェクトに基づいて、作業中のシステム_LEAVEのプロトタイプからオブジェクトを作成する必要があります。オブジェクトには という名前の関数がLEAVEあり、ドキュメントの準備ができたときに起動する必要があります。このシステムには、古いコードの一部にすでに同様の機能があり、私はそれを統一しようとしています。_LEAVEReady

ここに私が試しているコードがありますが、エラーが発生し続けます:

var LEAVE = function () {

}

$(document).ready(function () {
    _LEAVE.Ready();
});


var _LEAVE = function (params) {

    this.Ready = function () {
        alert ("Leave Ready");
    };
}

_LEAVE.prototype = new LEAVE();

エラー:

SCRIPT438: オブジェクトはプロパティまたはメソッド 'Ready' をサポートしていません leave.js、行 6 文字 5

これはシステムの他の部分で起こっているように見えるので、どこが間違っているのかわかりません。少なくとも、似たようなことが起こっていますが、古いコードを理解するのに苦労しています...

誰でも私に与えることができるアドバイスをいただければ幸いです!:-)

4

2 に答える 2

3

あなたを正しく理解したかどうかはわかりませんが、オブジェクトのインスタンスを作成しようとしていますか?LEAVEもしそうならLEAVE、コンストラクター関数であるReady必要があり、その上のメソッドである必要がありますprototype

var LEAVE = function () {};
LEAVE.prototype.Ready = function () {
    alert("Leave Ready");
};

これで、演算子LEAVEを使用してコンストラクターを呼び出すことでインスタンス化できます。new

var _LEAVE = new LEAVE(); // _LEAVE is an instance of LEAVE
$(document).ready(function () {
    _LEAVE.Ready(); // Ready is a method of `LEAVE.prototype`
});

オブジェクトのプロパティとして宣言されたメソッドは、prototypeすべてのインスタンスで共有されます。したがって、のすべてのインスタンスで使用可能LEAVE.Readyメソッドがありますが、メモリ内の関数の1つのコピー(のプロパティに割り当てられたコピー)を共有しますLEAVE.prototype

于 2012-10-30T13:36:07.653 に答える
0

ここで行ったことは、親の LEAVE 関数から子の _LEAVE 関数を継承しただけです。ただし、子クラスでメソッドを呼び出したい場合は、そのインスタンスを作成する必要があります。したがって、_LEAVE クラスのインスタンスを作成する必要があります。この行を追加するだけです:

var _LEAVE_OBJECT = new _LEAVE();

_LEAVE.Ready(); の代わりに _LEAVE_OBJECT.Ready( )を使用します。$(document).ready で。

変更されたコード:

var LEAVE = function () {

}

$(document).ready(function () {
 _LEAVE_OBJECT.Ready();
});


var _LEAVE = function (params) {
   this.Ready = function () {
    alert ("Leave Ready");
    };  
}
_LEAVE.prototype = new LEAVE();
var _LEAVE_OBJECT = new _LEAVE();
于 2012-10-30T13:59:36.773 に答える