Panggilan fungsi JavaScript dibahagikan kepada 4 mod:
1. Mod panggilan kaedah: iaitu, objek mengandungi atribut kaedah, Obj.methodName() atau Obj[methodName]().
2. Mod panggilan fungsi: methodName().
3. Mod panggilan pembina: new MethodName().
4. Guna dan panggil mod panggilan: ObjA.apply(ObjB,args[]) atau ObjA.call(ObjB,arg1,arg2...).
Apabila fungsi dipanggil, selain daripada menerima parameter formal, ia juga menerima ini dan hujah. Antaranya, ini adalah konteks objek fungsi dan hujah adalah parameter sebenar.
Guna dan panggil melaksanakan fungsi yang sama, iaitu, menukar konteks objek fungsi (rujukan yang ditunjukkan oleh ini adalah bahawa parameter formal adalah berbeza). apply ialah argumen atau tatasusunan, panggilan ialah berbilang parameter formal individu yang dipisahkan dengan koma.
function add(c) { alert(this.a+this.b+c); } var test={a:1,b:2} add.call(test,3);
Sebelum melaksanakan add.call(test,3);, kedua-dua tambah dan ujian adalah milik tetingkap, dan ini menghala ke tetingkap pada masa ini. add.call(test,3); Apabila melaksanakan, masukkan badan kaedah tambah Pada masa ini, ini ditukar dari tetingkap ke ujian Pada masa ini, this.a=test.a, this.b=test.b, dan c dihantar sebagai parameter formal Nilai amaran() ialah 1 2 3=6. apply juga mempunyai fungsi yang sama.
Sambungan dan pewarisan melalui permohonan dan panggilan:
function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } function Cat(name){ Animal.call(this, name); } var cat = new Cat("Black Cat");//执行时,Cat函数体的this由window切换为Cat{}, // Animal函数体的this.name通过形式参数传入即为Black Cat,最终cat //得到的结果为cat=Cat{name:"Black Cat",showName: function(){ alert(this.name);}, cat.showName();//执行时this由window切换为 //Cat{name:"Black Cat",showName: function(){ alert(this.name);} 此时this.name //为this.name=Cat.name,因此为Black Cat。