ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptのこの仕組み_基礎知識

JavaScriptのこの仕組み_基礎知識

WBOY
リリース: 2016-05-16 15:16:51
オリジナル
1228 人が閲覧しました

JavaScript には独自のこのメカニズムのセットがあり、状況に応じて、このメカニズムのポイントも異なります。

グローバルスコープ

console.log(this); //全局变量
ログイン後にコピー

グローバル スコープはこれを使用して、ブラウザ環境のウィンドウであるグローバル変数を指します。

注: ECMAScript5 の厳密モードにはグローバル変数がなく、ここでは未定義です。

関数呼び出し

function foo() {
  console.log(this);
}

foo(); //全局变量

ログイン後にコピー

この関数呼び出しもグローバル変数を指します。

注: ECMAScript5 の厳密モードにはグローバル変数がなく、ここでは未定義です。

オブジェクトメソッド呼び出し

var test = {
  foo: function () {
    console.log(this);
  }
}

test.foo(); //test对象

ログイン後にコピー

オブジェクト メソッド呼び出しでは、これは呼び出し元を指します。

var test = {
  foo: function () {
    console.log(this);
  }
}

var test2 = test.foo;
test2(); //全局变量

ログイン後にコピー

ただし、この遅延バインディング機能により、上記の例では、これはグローバル変数を指します。これは、関数を直接呼び出すことと同じです。

これは非常に重要です。同じコードセグメントは

を実行するときにのみ決定できます。

コンストラクター

function Foo() {
  console.log(this);
}

new Foo(); //新创建的对象
console.log(foo); 

ログイン後にコピー

コンストラクター内で、これは新しく作成されたオブジェクトを指します。

これを明示的に設定します

function foo(a, b) {
  console.log(this);
}

var bar = {};

foo.apply(bar, [1, 2]); //bar
foo.call(1, 2); //Number对象

ログイン後にコピー

Function.prototype の call または apply メソッドを使用する場合、関数内の this は渡される最初のパラメーターとして設定されます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート