ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript を深く理解する_JavaScript スキル

JavaScript を深く理解する_JavaScript スキル

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

私は最近、プロトタイプ、Ext コアなどの JavaScript ライブラリのソース コードをたくさん読みました。この概念は、これらのライブラリで頻繁に使用されます。昨日「JavaScript 王の帰還」という本を読んで初めて、私はこれについて深く理解しました。
まとめると:
1. 関数の呼び出し元と所有者
JavaScript の関数には、呼び出し元と所有者という 2 つの概念があり、通常は関数への参照です。それが現在の関数を呼び出した場合、caller=null になります。ほとんどのブラウザの JavaScript 実装は、caller 属性を使用して取得できます (これは ECMAScript 仕様の一部ではないため、注意して使用してください)。 これは、次のコードからよく理解できます:

コードをコピーします コードは次のとおりです:

function a(){
alert('fun a caller=' a.caller);
}
function b(){
a();
a () ;
b();

----------
操作の結果、次の 2 つのダイアログ ボックスが表示されます。
呼び出し元 = null;
2.
呼び出し元 = function b(){
}
---------- ---- ------------
所有者に関しては、関数を呼び出すオブジェクトを指します (動的概念)。関数本体内のこれは、関数の所有者を指します。関数。これは、Java や C の this ポインターとはまったく異なる 2 つの概念です。多くの人がこれを無視します。これが、JavaScript での this ポインターがよく理解できない理由の 1 つです。次の例を見てください:



コードをコピーします コードは次のとおりです: var oa = {
x:1,
y:2
}
var ob = {
x:11,
y:12
}
関数 a (w){
alert(w "=" this.x "," this.y)
}
a("?");
oa.fun = a; .fun("a" );
ob.fun = a;


--------
最初の呼び出し a( ) この時点では、所有者は指定されていません。通常、これはブラウザーの最上位要素ウィンドウを指し、x 属性と y 属性はウィンドウ内で定義されません。
結果は次のように表示されます: ?=undependent,unknown
oa.fun = a; oa.fun("a"); 関数参照をオブジェクト a の属性 fun に割り当て、すべての関数を呼び出します。関数が a になると、結果は次のように表示されます: a=1,2
同様に、ob.fun("b") は b=11,12 と表示されます。
JavaScript で関数の所有者 (this) を変更する方法は、関数参照をオブジェクトのプロパティに割り当てることです。
Function オブジェクトには、この関数を実装するための 2 つのプロトタイプ関数もあります: apply と call。これら 2 つの関数の最初のパラメーターは、指定される所有者オブジェクトです。それらの唯一の違いは、その後に渡される仮パラメーターを適用することです。関数に配列を追加するか、引数オブジェクトを直接使用します。そして、呼び出しは仮パラメータの直後に続きます。
上記の oa.fun=a; oa.fun("a") は、a.apply(oa, ["a"]) または a.call(oa, "a"); に書き換えることができます。 > ob.fun=b; ob.fun("b") は、a.apply(ob, ["b"]) または b.call(ob, "b"); と書き換えることができます。 , 範囲や使い方が分かりやすいです。

ここにいくつかの参考資料があります
JavaScript の使用法の概要

http://www.jb51.net/article/16863.htm


JavaScript についての詳細な理解

http://www.jb51.net/article/19425.htm
JAVASCRIPT この詳しい説明はオブジェクト指向です

http://www.jb51.net/article/17584.htm
JavaScript このポインター

http://www.jb51.net/article/19434.htm
JavaScript でのこのキーワードの使用方法の詳細な説明

http://www.jb51.net/article/7954.htm
JavaScript このキーワードの使用状況分析

http://www.jb51.net/article/16235.htm

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