js-this
下面代码输出什么?
var name = 222
var a = {
name: 111,
say: function () {
console.log(this.name);
}
}
var fun = a.say
fun()
a.say()
var b = {
name: 333,
say: function (fun) {
fun()
}
}
b.say(a.say)
b.say = a.say
b.say()
1. 在函数中直接调用
function get(a){
console.log(a);
}
get('你好')
//get.call(window,'你好')
get(‘你好’)是get.call(window,‘你好’)的简写,就是调用window下的‘你好’
2. 函数作为对象的方法被调用(谁调用我 我就指向谁)
var person ={
name:'张三',
run: function(time){
console.log(`${this.name} 在跑步 最多${time}min就不行了 `);
}
}
person.run(30)
//person.run.call(person,30)
person对象调用就指向person对象
答案:
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)
}
}
b.say(a.say)
b.say = a.say
b.say() // b.say.call(b) // 333