在某个特殊对象的作用域中,调用方法。
例如:
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); }