首页 > 代码库 > S1:函数上下文

S1:函数上下文

函数的上下文是可以变化的,因此,函数内的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,总之,函数本身是独立的。可以通过Function对象上的call或者apply函数来修改函数的上下文:

//定义一个全局的函数对象function printName(){    return this.name;}//设置printName的上下文为jack, 此时的this为jackprint(printName.call(jack));//设置printName的上下文为abruzzi,此时的this为abruzziprint(printName.call(abruzzi));print(printName.apply(jack));print(printName.apply(abruzzi));//只有一个参数的时候call和apply的使用方式是一样的,如果有多个参数:setName.apply(jack, ["Jack Sept."]);print(printName.apply(jack));setName.call(abruzzi, "John Abruzzi");print(printName.call(abruzzi));