js中call,apply與bind三函式

2021-07-16 07:33:00 字數 1374 閱讀 2334

func.call(thisvalue, arg1, arg2, ...);

第乙個引數就是this所要指向的那個物件,後面的引數則是函式呼叫時所需要的引數.

例:function add(a, b)

add.call(this, 1, 2);

call方法的乙個應用是呼叫物件的原生方法

var obj = {};

obj.hasownproperty('tostring'); //false

obj.hasownproperty = function ()

obj.hasownproperty('tostring'); //true

object.prototype.hasownproperty.call(obj, 'tostring'); //false

時的引數,使用格式如下:

function f(x, y)

f.call(this,1,1);

function.prototype.bind()

bind方法用於將函式體內的this繫結到某個物件,然後返回乙個新函式.

var print = console.log;

print(4);

//報錯,因為此時console.log中的this物件已經不指向console了

使用bing解決這個問題

var print = console.log.bind(console);

print(2);

例:var counter =

};counter.count; //0

counter.inc();

counter.count(); //1

this指向莫名的改變

var counter =

};var func = counter.inc;

func();//此時this指向window,莫名改變了...

如何解決這個問題,使用bind

var func = counter.inc.bind(counter);

將inc內部的this繫結到counter物件上

var add = function(x, y) ;

var obj = ;

var newadd = add.bind(obj, 5);

newadd(5); //20

call方法與bind方法的結合使用

[1, 2, 3].slice(0, 1);

array.prototype.slice.call([1, 2, 3], 0, 1);

var slice = function.prototype.call.bind(array.prototype.slice);

slice([1, 2, 3], 0, 1);

js中call,apply和bind方法

語法 任意函式.call 任意物件,引數1,引數2 特徵 call能呼叫函式,後面可傳入多個引數,用逗號隔開 3.價值 任意物件都能呼叫任意函式 功能 function fn a,b var obj2 fn.call obj2,你好 6 這樣就能為obj2新增乙個屬性abc,值為 你好6 原因是使用...

js 中call apply和bind的區別與聯絡

1 都是用來改變函式的this物件的指向的。2 第乙個引數都是this要指向的物件。3 都可以利用後續引數傳參。var xw var xh xw.say 輸出是小王,男,今年24 而如果我們想用xw的say方法顯示xh的資料,則 1 call xw.say.call xh 3 bind xw.say...

原生JS 封裝call apply 函式

var value window var obj function show name,age 改變this指向的原理大概是這個樣子的 obj.show show obj.show delete obj.show 很簡單的過程,應該都能明白在函式的原型鏈上封裝兩個函式 封裝call函式 functi...