您的位置:首页 > 移动开发

Apply和call方法-扩充函数赖以生存的作用域

2016-04-13 13:36 441 查看
在某个特殊对象的作用域中,调用方法。

例如:

function Person(name, age, job) {

this.name = name;

this.age = age;

this.job = job;

this.sayName = function () {

alert(this.name);

}

}

Person("YU", 29, "BB");

window.sayName(); //Yu

var o = new Object();

Person.call(o, "YU", 29, "BB");

o.sayName(); //Yu


第一个调用,person的属性和方法都被添加给了windows对象了,因为当在全局作用域中调用一个函数时,this总是指向global对象也就是windows对象。

第二个调用则可以理解为把person函数可以在o的作用域中调用,所以o也就有了所有的属性和方法

这两个方法都是用来改变作用域的,不同之处是传递参数的不同

Apply方法第一个参数是this对象,第二个参数是数组

Call方法第一个参数是this对象,以后的参数是值。

使用哪种方法,可以根据参数的类型决定。

Apply

function callsum1(num1,num2){

return Sum.apply(this,arguments);

}

function callsum1(num1,num2){

return Sum.apply(this,[2,3]);

}

Call

function callsum1(num1,num2){

return Sum.call(this,num1,num2);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: