私が知る限り、javascriptでオブジェクトの関数を作成する主な方法は2つあります。それらは:あなたがやった場合は明らかにjavascriptでオブジェクトの関数を作成する
function MyObject() {
...
}
MyObject.prototype.myFunc1 = function() {
...
}
MyObject.prototype.myFunc2 = function() {
....
}
::、
function MyObject() {
this.myFunc1 = function() {
...
}
this.myFunc2 = function() {
...
}
...
}
方法Bのプロトタイプに追加します。
方法Aは、コンストラクタでそれを作る
MyObject.myFunc3 = function() {
....
}
そしてmyFunc3
はMyObject自体に関連付けられ、で作成された新しいオブジェクトは関連付けられませんキーワード。わかりやすくするために、new
キーワードで新しいオブジェクトを作成することはできませんが、メソッドCとします。
この2つの違いは何ですか?私が言う限りでは、マシン上で起こっていることが異なっていても、論理的には同じ効果があります。
私が推測するなら、唯一の違いは、メソッドAのようにコンストラクタでそれらを定義すると、作成された各オブジェクトに対してまったく新しい関数オブジェクトが作成され、それが呼び出されたときにいつでも参照するMyObject内の1つのコピーです。これが事実なら、なぜあなたはそれを他のものよりもうまくやりますか?それ以外の場合は、メソッドAとメソッドBの違いは何ですか?
[this](http://jsfiddle.net/uwv5a/) –
のようなオブジェクトに関数を作成して、モジュールパターンについても読むことができます:http://www.engfers.com/code/javascript-module-pattern/ – bryanmac
@CoreyFarwell、私はそれが基本的に方法Aと同じことをすると思います、はい? –