obj.call(thisobj, arg1, arg2, ...);
兩者作用一致,都是把obj(即this)繫結到thisobj
,這時候thisobj
具備了obj
的屬性和方法。或者說thisobj
『繼承』了obj
的屬性和方法。繫結後會立即執行函式。
function add(j, k)
function sub(j, k)
我們在控制台執行:
add(5,3); //8
add.call(sub, 5, 3); //8
sub(5, 3); //2
sub.call(add, 5, 3); //2
示例:
var a = ;物件a類似array,但不具備array的slice等方法。使用call繫結,這時候就可以呼叫slice方法。a.slice(); //typeerror: a.slice is not a function
array.prototype.slice.call(a);//[1, "yjc"]
var parent = function()
var child = {};
console.log(child);//object {} ,空物件
parent.call(child);
console.log(child); //object
以上實現了物件的繼承。
obj.bind(thisobj, arg1, arg2, ...);
同樣是add()和sub():
add.bind(sub, 5, 3); //不再返回8
add.bind(sub, 5, 3)(); //8
如果bind的第乙個引數是null或者undefined,等於將this繫結到全域性物件。 如何理解和熟練運用js中的call及apply?
function cat cat.prototype var blackcat new cat blackcat.say 用的比較多的,通過document.getelementsbytagname選擇的dom 節點是一種類似array的array。它不能應用array下的push,pop等方法。我...
如何理解和熟練運用js中的call及apply?
obj.call thisobj,arg1,arg2,兩者作用一致,都是把obj 即this 繫結到thisobj,這時候thisobj具備了obj的屬性和方法。或者說thisobj 繼承 了obj的屬性和方法。繫結後會立即執行函式。function add j,k function sub j,k...
如何理解和熟練運用js中的call及apply
function cat cat.prototype var blackcat new cat blackcat.say 用的比較多的,通過document.getelementsbytagname選擇的dom 節點是一種類似array的array。它不能應用array下的push,pop等方法。我...