JavaScriptの世界では、機能を定義する多くの方法があります。これはJavaScriptの柔軟性を反映していますが、特に言語の基礎を持っていない学生にとって、初心者を混乱させるのはこの理由です。ことわざにあるように、すべての道路はローマに通じていますが、道路が多すぎると、どの道路が正しい道であるかわからないため、旅行者を喪失にします。ハハ、私はナンセンスについて話している、そして私はより少ない話をし、最初にコードを読んでください:
コードコピーは次のとおりです。
/*最初のメソッドは関数ステートメントを使用し、形式は次のとおりです*/
関数fn(){
alert( "これは関数定義の関数ステートメントです");
}
fn();
/*2番目の方法では、function()constructorを使用して関数をクローンします*/
var f = new function( "a"、 "b"、 "alert(a+b)");
f(a、b);
実際、それは次のコードと同等です。
関数f(a、b){
アラート(a+b);
}
/*3番目の方法は、関数を使用して直接カウントすることです*/
var zhenn = function(){
アラート( "zhen");
}
Zhenn();
その中で、「関数ステートメント」を使用して「関数直接数量」を使用して関数を定義する方法は、より一般的で理解しやすいように思われるため、ここではあまり言いません。関数は通常複数のステートメントで構成されているため、一般に、function()constructorを使用して関数をクローンするために使用されることはめったにありません。それらがパラメーターとして文字列として渡された場合、それは必然的にコードの読みやすさを貧弱にします。
ここでのコンストラクターに言及させてください。実際、文字通りの観点から、コンストラクターは関数のようです。実際、それは関数ではなく、単なる関数モデルです。不適切な例を示すために、コンストラクターは新しく組み立てられた車と同等です。それが遠くであろうと近いかどうかにかかわらず、それは車ですが、まだ燃料補給されていません(使用前の必要なステップを表しています)ので、開始できません。車を正常に運転したい場合は、オイルを追加する必要があります。実際、このプロセスはコンストラクターのインスタンス化と同等です。そうしないと、正常に実行されません!次の例を参照してください。
コードコピーは次のとおりです。
関数fn(){//コンストラクターを定義します
this.elem = "これは、関数を定義するfunction()コンストラクターです、haha";
this.fn = function(){
alert( "これは、function()constructor、hehe"を使用して関数を定義することです);
}
}
var f = new fn(); //インスタンス化
アラート(F.Elem);
f.fn();