js 有关this的大厂面试题
在函数中直接使用
function get(content){
console.log(content)
}
get(‘你好’) // 就是get.call(window, '你好')
函数作为对象的方法被调用(谁调用我 我就指向谁)
var person = {
name:'张三',
run: function (time) {
console.log('${this.name} 在跑步 最多 ${time} min就不行了')
}
}
person.run(30) //等价于person.run.call(person, 30)
练习题
var name = 222
var a = {
name: 111,
say:function () {
console,log(this.name)
}
}
var fun = a.say()
fun() //直接调用->fun.call(window) // 222
a.say() //a.say.call(a) //111
var b = {
name: 333,
say:function (fun) {
fun() //fun.call(window) //222
}
}
b.say(a.say) //a.say传入b //222
b.say = a.say //fun() ->console,log(this.name)
b.say() //b.say.call(b) //333