apply 方法和call 方法

2022-09-02 12:51:12 字數 1005 閱讀 2009

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...