javascriptの対象者向け
3156 ワード
オブジェクト:は、オブジェクトによく使われる2つの方法を作成し、 工場モード: コンストラクションモード: callとappyメソッドcallとappyはいずれも、関数が動作するときのcontextすなわちコンテキストを変更するために存在し、換言すれば、関数体内部thisの指向を変更するためである.JavaScriptの関数には「定義時文脈」と「実行時文脈」と「文脈は変えられます」という概念があります.例えば、関数func 1は、次のように定義されている.
function creatObject(name,age){
var o = new Object();
o.name = name;
o.age = age;
o.run = function(){
return this.name +this.age+"run....";
}
return o;
}
var ob1 = creatObject('sdfas',11);
alert(ob1.run());
# , Object , 。
function Student(name,age) {
this.name = name;
this.age = age;
this.run = function(){
return this.name + this.age+"run ....";
}
}
var s = new Student('mmm',100);
alert(s.run())
# var s=Student('mmm',100), , , this window
構造関数モードと工場モードの違い:1.構造関数法には表示されていない作成対象(new Object();2.直接に属性と方法をthisオブジェクトに割り当てます.3.renturn文がありません.コンストラクタモードにおけるオブジェクトの作成プロセス:1.コンストラクタが使用され、newコンストラクタ()が使用されると、背景にnew Object()が実行されます.2.構造関数の作用領域を新しいオブジェクトに、関数内のthisはnew Object()からのオブジェクトを表します.3.コンストラクタ内のコードを実行する.4.新しいオブジェクトを返します.注意:thisとは、現在のスコープのオブジェクトを表す参照です.全体の範囲でthisがwindowオブジェクトを表している場合、構造関数の体内では、現在の構造関数が宣言したオブジェクトを表します.var func1 = function(arg1, arg2) {};
は、func 1.call(this,arg 1,arg 2)を通過することができる.またはfunc 1.apply(this、[arg 1,arg 2]);を選択します.その中のthisはあなたが指定したい文脈で、彼はいずれかのJavaScriptオブジェクト(JavaScriptの中のすべてのオブジェクト)ができます.コールはパラメータを順番に渡す必要があります.JavaScriptでは、ある関数のパラメータ数が固定されていませんので、適用条件としては、パラメータが明確に数を知っている時に、callを使って、不確定の時に、appyを使って、パラメータpushを配列に送ります.パラメータ数が不確定な場合には,関数内部もargmentsという配列によって,すべてのパラメータを便利にすることができる.ここは作者から引用します.趙望野さん.https://www.zhihu.com/question/20289071/answer/14745394