0

次のようなオブジェクトを作成したいと思います。

Object = function () {
    this.Subfunction = function (Data) {
        alert('Data');
    }
}

次のように、オブジェクトの外部から呼び出すことができます。

var Object = new Object();
Object.Subfunction(Data);

で何かを実行するたびに送信Dataする必要があるのは本当に不便です。ObjectObject

4

3 に答える 3

2

オブジェクトで何かを実行するたびに、オブジェクトを介してデータを送信する必要があるのは本当に不便です

これがオブジェクト指向プログラミングの優れた点です。オブジェクトはデータを保持し、動作を関連付けることができます。data常に渡すことを避けたい場合は、関数を使用して、新しく作成されたインスタンスのメンバーとしてconstructor初期化および保存できます。data

例えば:

function SomeObject(data) {
    this.data = data; //store data
}

SomeObject.prototype.doSomething = function () {
    console.log(this.data); //use data
};

var o = new SomeObject('some data as string');

o.doSomething(); //no need to pass data anymore
于 2013-08-26T03:17:09.057 に答える
1

この関数プロトタイプに移動する方が適しているかもしれません

MyObject = function () {};
MyObject.prototype.subFunction = function (data) {console.log('Data', data);};

// this still works
var myObject = new MyObject();
myObject.subFunction('foo');

// this also works
MyObject.prototype.subFunction('bar');

barの例では、 を使用する必要はありませんでしたがnew、その場合はインスタンス固有ではないことに注意してください(コンテキストが手動で選択されない限り、 はプロトタイプthisに設定されます)。

于 2013-08-26T02:38:30.663 に答える
1

おそらく、渡されたパラメーターを操作するつもりだったのでしょう。

Object = function () {
    this.Subfunction = function (Data) {
        alert(Data);
    }
};

var test= "Hello world !";
var Object = new Object();
Object.Subfunction(test);

これがフィドルです:http://jsfiddle.net/3EpSy/

于 2013-08-26T02:40:14.730 に答える