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

Pengenalan terperinci kepada panggilan kaedah dalam JavaScript

PHPz
Lepaskan: 2018-09-29 17:56:42
asal
1172 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan