Rumah >hujung hadapan web >tutorial js >Pengenalan terperinci kepada panggilan kaedah dalam JavaScript

Pengenalan terperinci kepada panggilan kaedah dalam JavaScript

PHPz
PHPzasal
2016-05-16 16:23:301159semak imbas

Artikel ini terutamanya memperkenalkan pengenalan kaedah panggilan dalam JavaScript Dalam JavaScript, jika fungsi kepunyaan objek, tindakan mengakses fungsi melalui objek dipanggil "memanggil kaedah". .

Dalam JavaScript, jika fungsi kepunyaan objek, tindakan mengakses fungsi melalui objek dipanggil "panggilan kaedah". Berbeza daripada panggilan fungsi biasa, apabila membuat panggilan kaedah, rujukan ini dalam fungsi akan berubah - ini akan merujuk kepada objek yang digunakan untuk memanggil fungsi (objek akan menjadi konteks panggilan kaedah panggilan):

var x = 99;
var sample = {
  x:1,
  act:function(a){
    this.x = a*a;//assign value to sample's x, not global object's x.
  }
}
sample.act(6);
console.log(sample.x);//36
console.log(x);//9

Sama seperti mengakses sifat dalam objek, selain menggunakan operator titik, JavaScript juga boleh menggunakan operator kurungan untuk membuat panggilan kaedah:

//other ways to invoke method
sample["act"](7);
console.log(sample.x);//4

Untuk fungsi dalam JavaScript, tingkah laku yang lebih menarik ialah fungsi (penutupan) boleh dibenamkan dalam fungsi. Apabila membuat panggilan kaedah, jika terdapat fungsi terbenam dalam fungsi kaedah, maka kod dalam fungsi terbenam boleh mengakses nilai pembolehubah luaran:

//nested function can access variable outside of it.
var y = 88;
var sample2 = {
  y:1,
  act2:function(a){
    this.y = inner();
    function inner(){
      return a*a;
    }
  }
}
sample2.act2(8);
console.log(sample2.y);//64
console.log(y);//88

Walau bagaimanapun, bertentangan dengan gerak hati, fungsi terbenam code in tidak boleh mewarisi ini dari luar; iaitu, dalam fungsi terbenam, ini tidak merujuk kepada objek yang memanggil kaedah, tetapi objek global:

//nested function does not inherit "this". The "this" in nested function is global object
var sample3 = {
  act3:function(){
    inner();
    function inner(){
      console.log(this);//window object
    }
  }
}
sample3.act3();

Jika anda benar-benar perlu benamkan fungsi Untuk mengakses objek yang memanggil kaedah, anda boleh menyimpan nilai ini kepada pembolehubah dalam fungsi luaran:

//pass "this" to nested function
var sample4 = {
  act4:function(){
    var self = this;
    inner();
    function inner(){
        console.log(self);//Object {act4=function()}
    }
  }
}
sample4.act4();

Di atas ialah keseluruhan kandungan bab ini Untuk lebih banyak tutorial berkaitan, sila lawati Tutorial video JavaScript !

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