構築メソッド
function coder()
{
this.name = 'モダン マジック';
this.job = 'Web 開発者';
this.coding = function ()
{alert('コードを書いています'); }
}
var coder = new coder();
alert(coder.name);
coder.coding();
ファクトリ メソッド
function createCoderFactory()
{
var obj = new Object() ;
obj.name = 'モダンマジック';
obj.job = 'プログラマー';
obj.coding = function ()
{
alter('コードを書いています' );
};
return obj;
}
var coder = createCoderFactory();
alert(coder.name);
coder.coding();
ファクトリ メソッドとコンストラクター メソッドにはどちらも同じ欠点があります。つまり、インスタンスが作成されるたびに、クラスの各関数がインスタンス化されるということです。
プロトタイプチェーン
function coder() {}
coder.prototype.name = 'Modern Magic';
coder.prototype.job = 'プログラマー';
coder.prototype.coding = function(){
alert('私はコードの作成 ');
};
var coder = new coder();
alert(coder.name);
coder.coding();
プロトタイプ チェーンの欠点の 1 つは、1 つのインスタンスが変更されると、他のインスタンスもそれに応じて変更されることです。例:
var coder1 = new coder();
var coder2 = new coder();
alert(coder1.name); /*現代の魔法を表示*/
coder2.name = 'nowmagic';
alert(coder1.name); Show nowamagic* /
alert(coder2.name); /*これも nowamagic*/
混合メソッド
上記の 3 つはそれぞれ欠点があるため、改善する必要があります。 。
function coder()
{
this .name = 'Modern Magic';
this.job = 'プログラマー';
}
coder.prototype.coding = function(){
alert('コードを書いています');
};
動的オリジナルチェーン
最初の 3 つの欠点を解決する別の方法があります。
function coder()
{
this .name = 'Modern Magic';
this.job = 'プログラマー';
if (typeof(coder._init) == '未定義')
{
this.coding =関数 ( :)