JavaScript関数の他の属性と方法
5104 ワード
一、length属性:
length属性は、関数が受信したい名前付きパラメータの個数を表します.
二、プロタイプの属性
プロトタイプ 下には2つの方法があります.apply()とcall()は、それぞれの関数に引き継ぎではない2つの方法が含まれています.
これらの2つの方法の用途はいずれも特定の作用領域で関数を呼び出すが、実際には関数内のthisオブジェクトを設定する値に等しい.
1、アプリ()の方法
2、コールの方法
三、apply()とcall()方法その他の使用場所
実際には、パラメータの伝達は、apply()とcall()の方法の真の使用の場所ではない.それらがよく使用される場所は、関数を拡張して動作させることができるスコープである.
つまり、boxオブジェクトとsayColor()方法との間には、box.sayColor=sayColorなど、余計な関連操作はありません.
length属性は、関数が受信したい名前付きパラメータの個数を表します.
function box(name, age) {
alert(name + age);
}
box(" ",20);
alert(box.length); //2
二、プロタイプの属性
プロトタイプ 下には2つの方法があります.apply()とcall()は、それぞれの関数に引き継ぎではない2つの方法が含まれています.
これらの2つの方法の用途はいずれも特定の作用領域で関数を呼び出すが、実際には関数内のthisオブジェクトを設定する値に等しい.
1、アプリ()の方法
function box(num1,num2){
return num1+num2;
}
alert(box(10,10)); // 20
function sayBox(num1, num2) {
return box.apply(this, [num1, num2]); //this , window [] box
}
alert(sayBox(10,10));// 20 box sayBox , box , sayBox
ボックス関数のパラメータが多すぎると、次のような方法が使えます. function box(num1,num2){
return num1+num2;
}
alert(box(10,10)); // 20
function sayBox(num1, num2) {
return box.apply(this,arguments); //arguments box
}
alert(sayBox(10,10));// 20 box sayBox , box , sayBox
alert(sayBox(10,90,90,20));// ,box ,
2、コールの方法
function box(num1, num2) {
return num1 + num2;
}
alert(box(10,10)); //20
function callBox(num1, num2) {
return box.call(this, num1, num2); // apply
}
alert(callBox(10,10)); //20
call()メソッドはappy()方法と同じで、彼らの違いはただ受信パラメータの方式が違っているだけです.call()法に対して,最初のパラメータは作用領域であり,変化はなく,残りのパラメータだけが直接関数に伝達される.三、apply()とcall()方法その他の使用場所
実際には、パラメータの伝達は、apply()とcall()の方法の真の使用の場所ではない.それらがよく使用される場所は、関数を拡張して動作させることができるスコープである.
var color = ' '; // window.color = ' ';
var box = {
color : ' '
};
function sayColor() {
alert(this.color);
}
sayColor(); // window
sayColor.call(this); // window
sayColor.call(window); // window
sayColor.call(box); // box,
私たちがcall(box)方法を使うと、sayColor()方法の運行環境はすでにboxの対象になっています.call()またはappy()を使って作用領域を拡張する最大の利点は、オブジェクトが方法との結合関係を一切必要としないことである(結合とは、相互に関連した意味で、拡張と維持が連鎖反応する).つまり、boxオブジェクトとsayColor()方法との間には、box.sayColor=sayColorなど、余計な関連操作はありません.