Rumah  >  Artikel  >  hujung hadapan web  >  Mekanisme ini dalam pengetahuan JavaScript_Basic

Mekanisme ini dalam pengetahuan JavaScript_Basic

WBOY
WBOYasal
2016-05-16 15:16:511206semak imbas

JavaScript mempunyai mekanisme ini sendiri Dalam situasi yang berbeza, penunjuk ini berbeza.

Skop global

console.log(this); //全局变量

Skop global menggunakan ini untuk menunjuk kepada pembolehubah global, iaitu tetingkap dalam persekitaran penyemak imbas.

Nota: Mod ketat ECMAScript5 tidak mempunyai pembolehubah global, dan ini tidak ditentukan.

Fungsi panggilan

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

foo(); //全局变量

Panggilan dalam fungsi ini juga menunjuk kepada pembolehubah global.

Nota: Mod ketat ECMAScript5 tidak mempunyai pembolehubah global, dan ini tidak ditentukan.

Panggilan kaedah objek

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

test.foo(); //test对象

Dalam panggilan kaedah objek, ini menunjukkan kepada pemanggil.

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

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

Walau bagaimanapun, disebabkan ciri pengikatan lewat ini, dalam contoh di atas, ini akan menunjukkan kepada pembolehubah global, yang bersamaan dengan memanggil fungsi secara langsung.

Ini sangat penting Segmen kod yang sama hanya boleh ditentukan apabila dijalankan

Pembina

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

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

Di dalam pembina, ini menunjukkan kepada objek yang baru dibuat.

Tetapkan ini secara eksplisit

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

var bar = {};

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

Apabila menggunakan kaedah panggilan atau gunakan Function.prototype, bahagian dalam fungsi ini akan ditetapkan sebagai parameter pertama yang diluluskan.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn