ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascriptスキルにおける関数の呼び出しがnewか()かの違いの説明

JavaScript_javascriptスキルにおける関数の呼び出しがnewか()かの違いの説明

WBOY
WBOYオリジナル
2016-05-16 18:08:171553ブラウズ

方法 1

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

function Person(n,a) {
this.name = n;
this.age = a;
if(このインスタンス){
alert('新しい通話');
alert ('関数呼び出し ');
}
}
var p = new Person('jack',30) // --> 新しい呼び出し
> 関数呼び出し

メソッド 2

コードをコピー コードは次のとおりです。
function person(n,a){
this.name = n;
this.age = a;
if(thisinstanceofarguments.callee){
alert('新しい呼び出し');
}else{
alert('関数呼び出し');
}
}
var p = new Person('jack',30); > new call
person(); // --> 関数呼び出し


コードをコピー


コードは次のとおりです。 alert('関数呼び出し');
}
var p = new Person(' jack',30); // --> new call


;ただし、関数/クラスが次のように使用されている場合 独自のインスタンス オブジェクトのメソッドを呼び出すときに問題があります




コードをコピー


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


function person(n,a){
this.name = n; this.age = a; if(this.constructor == = argument.callee){ alert('新しい呼び出し' ); }else{ alert('関数呼び出し'); }
}
var p = 新しい人('jack',30); // 最初に新しいオブジェクトを作成します
p.fn = person // 独自のオブジェクトの fn 属性に関数/クラスを割り当てます p
p.fn();この文を呼び出すと、「これは新しい呼び出しです」というプロンプトが表示されますが、これは明らかに間違っています


もっと良い方法はありますか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。