var sayHello = function() {
console.log("hello, world");
};
調(diào)用這個(gè)方法時(shí)榛斯,可以直接:
sayHello();
var say = function(greeting){
console.log(greeting + ', ' + this.name);
};
用call來(lái)調(diào)用:
var person = {name: 'June'};
say.call(person, 'Hello'); //Hello, June
say.call(person, 'Goodbye'); //Goodbye, June
用apply來(lái)調(diào)用:
var person = {name: 'June'};
say.apply(person, ['Hello']); //Hello, June
say.apply(person, ['Goodbye']); //Goodbye, June
apply 和 call是很類似的邮辽,它們都能被其他方法調(diào)用來(lái)執(zhí)行這些方法千扶,它們?cè)谝粋€(gè)context中調(diào)用一個(gè)方法肆饶,它們的第一參數(shù)都是context镐躲。而它們最大的區(qū)別在于執(zhí)行一個(gè)具有多個(gè)參數(shù)的方法储玫。
var update = function(name, age, size){
this.name = name;
this.age = age;
this.size = size;
};
update.call(person, 'Slarty', 200, '1xM');
update.apply(person2, ['Slarty', 200, '1xM']);
call接收多個(gè)參數(shù)需要依次列出侍筛。在ECMAScript 6 中,如果參數(shù)個(gè)數(shù)不定時(shí)或者多個(gè)時(shí)缘缚,可以使用...
操作符【注:不支持 IE, Safari <= 8, Android Browser, iOS Safari 7 and node.js <= 4. 】勾笆。
fun.call(thisArg[, arg1[, arg2[, ...]]])
apply第二個(gè)參數(shù)必須是個(gè)數(shù)組,數(shù)組由這些參數(shù)組成桥滨。
fun.apply(thisArg, [argsArray])