javascriptオブジェクトの不完全な探索記録02:クレイジーコール!誰に電話しますか?何をコールしますか?
2943 ワード
暖かいヒント:著者の登山記録は、あなたなどの大神には全く価値がありません.私の人生の無駄な暖かさを思い出さないでください.コールは元々私達のアイドルオタク文化の専門用語です.ライブを見ている時にファンがステージの下で愛豆公演のリズムに合わせてスローガンを叫んでいます.例を挙げて、「超絶可愛い~TJY!!!」
javascriptには2つのよく挙げられる不思議な関数があります.伝説の
call()メソッドは、指定されたthis値と、それぞれ提供されるパラメータ(パラメータのリスト)を有する関数を呼び出します.
この方法の役割はappy()法と類似していますが、一つの違いはcall()法が受け入れるのはいくつかのパラメータのリストであり、appy()法が受け入れるのは複数のパラメータを含む配列です.
上の段から、私は2時までgetしました.1.これは人の話ではありません.2.
コールは誰ですか?誰に電話しますか
構文
fun.call(thisArg,arg 1,arg 2,…)
パラメータthisArg:fun関数運転時に指定されたthis値です.指定されたthis値は必ずしもこの関数が実行された時の本当のthis値ではないので、この関数が非厳密モードであれば、nullとundefinedとして指定されたthis値は自動的にグローバルオブジェクト(ブラウザではwindowオブジェクト)に向けられ、元の開始値(数字、文字列、ブール値)のthisは元の自動パッケージオブジェクトを指します.arg 1,arg 2,…:指定されたパラメータリストです.
戻り値は、あなたが呼び出した方法の戻り値です.この方法に戻り値がない場合は、undefinedに戻ります.
文書の説明を参考にして、
これでよく分かります.
更に簡単に理解すると、
どうやってコールしますか
ですから、期待される結果を得るためには、
何をコールしますか
私がまとめてみます.
1.愚かさを防止し、
2.継承を実現し、対象言語に対する基礎的な特性として、javascriptには多くの実施形態があり、そのうちの一つは
javascriptには2つのよく挙げられる不思議な関数があります.伝説の
call()
とapply()
はまずドキュメントの中の定義JavaScript標準ライブラリ-Function.prototype.call()JavaScript標準ライブラリ-Function.prototype.appyを見てください.call()メソッドは、指定されたthis値と、それぞれ提供されるパラメータ(パラメータのリスト)を有する関数を呼び出します.
この方法の役割はappy()法と類似していますが、一つの違いはcall()法が受け入れるのはいくつかのパラメータのリストであり、appy()法が受け入れるのは複数のパラメータを含む配列です.
上の段から、私は2時までgetしました.1.これは人の話ではありません.2.
call()
がよく分かっているということは、apply()
が分かりました.それは一つの攻略です.コールは誰ですか?誰に電話しますか
構文
fun.call(thisArg,arg 1,arg 2,…)
パラメータthisArg:fun関数運転時に指定されたthis値です.指定されたthis値は必ずしもこの関数が実行された時の本当のthis値ではないので、この関数が非厳密モードであれば、nullとundefinedとして指定されたthis値は自動的にグローバルオブジェクト(ブラウザではwindowオブジェクト)に向けられ、元の開始値(数字、文字列、ブール値)のthisは元の自動パッケージオブジェクトを指します.arg 1,arg 2,…:指定されたパラメータリストです.
戻り値は、あなたが呼び出した方法の戻り値です.この方法に戻り値がない場合は、undefinedに戻ります.
文書の説明を参考にして、
call()
の役割は実際に関数を変えて実行するthis
で、コールの語面の意味と合わせて理解できます.thisArg
を呼び出してfun
のthis
として、直接的にわかるように、王さんは洗濯服を持っているという方法があります.張さんに電話して服を洗濯させます.洗濯はできませんが、この電話で彼は洗いに行きます.これでよく分かります.
call()
の二つのパラメータ、一つ目は関数/洗濯を行うthis(対象)/枚目で、二つ目からはこの関数のパラメータです.更に簡単に理解すると、
call()
の実行は、fun
自体を実行しているにすぎず、この関数を実行する対象を変更したにすぎない.どうやってコールしますか
call()
の定義が分かりました.また、あの憂鬱な問題が頭に浮かんできました.var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());//The Window
詳細は私のもう一つの文章の中でjavascript対象が不完全で記録を探しています.which?-lskratの中でこの問題があまりにも無頓着な原因は、この中のthisが結局whichであり、「The Window」が現れた原因は結局object.getNameFunc()
を実行するのがWindow
の対象であるからです.ですから、期待される結果を得るためには、
call()
を呼んで、自分で実行してもいいですか?alert(object.getNameFunc().call(object));//My Object
本当に効果的です.call()
にコールしたいです.このような著しい治療効果はどこに使えますか?何をコールしますか
私がまとめてみます.
1.愚かさを防止し、
call()
このソースを指定し、上記を見てから分かりました.this
目標に対して、目标がぼんやりしている学生たちはthis
を使って直接call()
を指定して、実行させてもいいです.例:上記を参照してください2.継承を実現し、対象言語に対する基礎的な特性として、javascriptには多くの実施形態があり、そのうちの一つは
this
を用いることである.function Food(name, price) {
this.name = name,
this.price = price,
this.getPrice = function() {
console.log(" " + this.name + " " + this.price + " ! ")
}
}
function RouJiaMo() {
Food.call(this, " ", 5);
}
var rouJiaMo = new RouJiaMo()
rouJiaMo.getPrice();// 5 !
call()
を作成した場合、rouJiaMo
のFood()
をthis
に変更した.これはRouJiaMo
がrouJiaMo
と同じ内部変数を持つだけでなく、その内部関数を呼び出して、継承を形成することができる.