var sayHello = function() {
console.log("hello, world");
};
调用这个方法时,可以直接:
sayHello();
var say = function(greeting){
console.log(greeting + ', ' + this.name);
};
用call来调用:
var person = {name: 'June'};
say.call(person, 'Hello'); //Hello, June
say.call(person, 'Goodbye'); //Goodbye, June
用apply来调用:
var person = {name: 'June'};
say.apply(person, ['Hello']); //Hello, June
say.apply(person, ['Goodbye']); //Goodbye, June
apply 和 call是很类似的,它们都能被其他方法调用来执行这些方法,它们在一个context中调用一个方法,它们的第一参数都是context。而它们最大的区别在于执行一个具有多个参数的方法。
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接收多个参数需要依次列出。在ECMAScript 6 中,如果参数个数不定时或者多个时,可以使用...
操作符【注:不支持 IE, Safari <= 8, Android Browser, iOS Safari 7 and node.js <= 4. 】。
fun.call(thisArg[, arg1[, arg2[, ...]]])
apply第二个参数必须是个数组,数组由这些参数组成。
fun.apply(thisArg, [argsArray])
网友评论