obj.func.call(obj1) //是將obj1看做obj,呼叫func方法,將第乙個引數看做函式呼叫的物件,可以看做,將obj的方法給obj1使用
在函式體內this的值就是指向這個呼叫者,也就是第乙個引數,剩餘的引數都是需要傳遞給函式的值
例如:function add(a,b){
return a+b;
function sub(a,b){
return a-b;
call()的用法:
var a1=add.call(add,4,2);
var a2=sub.call(sub,4,2);
js認為他自己是萬能的,既然高階語言能夠繼承,我js也可以繼承
function fun1(){
this.a=123;
this.add=function(){
return this.a;
function fun2(){
this.a=456;
var a1=new fun1();
var a2=new fun2();
var a=a1.add.call(a2); //輸出的是456
這裡就是把f1的方法拿給f2來使用,f2便可以使用f1中所有的方法,這不正是高階語言中繼承的概念嗎,而且還可以模仿高階語言中的多繼承
function fun1(){
this.add=function(){
return this.a+this.b;
this.fun2=function(){
return this.a-this.b;
funtion fun3(){
this.a=10;
thi.b=2;
fun1.call(this);
fun2.call(this);
var f3=new fun3();
console.log(f3.add()) //13;
console.log(f3.sub()) //8
玩轉方法 call和apply
在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的 使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。下面說簡單易懂的,先看段 複製 如下 function introduce name,age var...
call() 和 apply()方法的區別
var foo window.value 2 function bar bar 2 bar.call foo 1 改變了函式裡面this額指向,原來指向的是wingdow,現在指向的是foo這個物件 function test str test jdaj jdaj var object new ob...
call和apply方法的異同
相信很多前端小夥伴們在寫 的時候應該都用過call 這兩個方法,應該也對這兩個方法有個基本的了解。但肯定也有些小夥伴對它們不是很熟悉,那這次就來 一下這兩個方法 想要深入了解call 這兩個方法,那麼必須要先知道他們的基本作用 改變物件的執行上下文 我們在寫乙個方法的時候,總是會用到乙個關鍵字thi...