ホームページ  >  記事  >  ウェブフロントエンド  >  これをJavaScriptで使用するにはどのような方法がありますか?

これをJavaScriptで使用するにはどのような方法がありますか?

coldplay.xixi
coldplay.xixiオリジナル
2021-03-31 13:39:122094ブラウズ

これを JavaScript で使用する方法: 1. 関数にオブジェクトがある場合、関数はそのオブジェクトを指します; 2. 関数にオブジェクトがない場合、グローバル オブジェクトを指します; 3. これはコンストラクターは新しいオブジェクトを指します。

これをJavaScriptで使用するにはどのような方法がありますか?

このチュートリアルの動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、DELL G3 コンピューター。

これを JavaScript で使用する方法:

1) 関数にそれが属するオブジェクトがある場合: 関数が属するオブジェクトをポイントします

関数には、それが属するオブジェクトがあります オブジェクトが使用されるとき、通常、その関数は式を通じて呼び出されますが、この場合、これは当然、それが属するオブジェクトを指します。たとえば、次の例:

var myObject = {value: 100};
myObject.getValue = function () {
 console.log(this.value); // 输出 100
 
 // 输出 { value: 100, getValue: [Function] },
 // 其实就是 myObject 对象本身
 console.log(this);
 
 return this.value;
};
 
console.log(myObject.getValue()); // => 100

getValue() はオブジェクト myObject に属し、myOjbect によって呼び出されるため、これはオブジェクト myObject を指します。

2) 関数には所有オブジェクトがありません: グローバル オブジェクトを指します

var myObject = {value: 100};
myObject.getValue = function () {
 var foo = function () {
  console.log(this.value) // => undefined
  console.log(this);// 输出全局对象 global
 };
 
 foo();
 
 return this.value;
};
 
console.log(myObject.getValue()); // => 100

上記のコード ブロックでは、foo 関数が関数本体で定義されていますが、 getValue、実際には getValue にも myObject にも属しません。 foo はどのオブジェクトにもバインドされていないため、呼び出されるとき、その this ポインタはグローバル オブジェクトを指します。

これは設計ミスだと言われています。

3) コンストラクター内のこれ: 新しいオブジェクトを指します

#js では、 new キーワードを使用してコンストラクターを呼び出します。これは、新しいオブジェクトについて。

var SomeClass = function(){
 this.value = 100;
}
 
var myCreate = new SomeClass();
 
console.log(myCreate.value); // 输出100

ところで、js では、コンストラクター、通常の関数、オブジェクトのメソッド、クロージャーの間に明確な境界はありません。境界線はすべて人間の心の中にあります。

4) 呼び出しの適用と呼び出し、およびバインドのバインド: バインドされたオブジェクトへのポイント

apply() メソッドは 2 つのパラメーターを受け取ります。最初の 1 つは実行関数です。関数.ドメイン、もう 1 つはパラメーター (引数) の配列です。

call() メソッドの最初のパラメータの意味は、他のパラメータを 1 つずつリストする必要があることを除いて、apply() メソッドの意味と同じです。

簡単に言うと、call メソッドは通常の関数の呼び出し方法に近いのに対し、apply では Array の形式で配列を渡す必要があります。それらは交換可能です。

var myObject = {value: 100};
 
var foo = function(){
 console.log(this);
};
 
foo(); // 全局变量 global
foo.apply(myObject); // { value: 100 }
foo.call(myObject); // { value: 100 }
 
var newFoo = foo.bind(myObject);
newFoo(); // { value: 100 }

関連する無料学習の推奨事項: JavaScript ビデオ チュートリアル

以上がこれをJavaScriptで使用するにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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