javascript 中的call和apply實例

學習使用call和apply,我想需要問自己兩個問題

1. 什麼場景下需要使用call或者apply
2. 如何使用

首先什麼時候需要使用呢,看代碼

function Animal(nameValue) {
	this.name = nameValue;
	this.showName = function(aValue, bValue) {
		return this.name + aValue + bValue;
	}
}

function Cat(nameValue) {
	this.name = nameValue;
}

兩個函數Animal, Cat, 其中Animal中有showName這個方法,那如果Cat也想用這個方法的話一定需要自己也定義一個麼?答案是否定的,這時候就是要用到call或者apply的時候了。

var animal = new Animal("Animal");
var cat = new Cat("Cat");

var nameCall = animal.showName.call(cat, "|a", "|b");
console.log(nameCall); // Cat|a|b
var nameApply = animal.showName.apply(cat,["|a","|b"]);
console.log(nameApply); // Cat|a|b


以上例子很清楚的展示了即使cat沒有showName這個方法也可以通過call或者apply借用animal的showName方法。

當然他們兩個的區別也很明顯,就是需要傳變量的時候,call是一個一個傳,apply是以數組形式傳


發佈了29 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章