/* eslint-disable no-use-before-define */
/* eslint-disable no-var */
function Person(color) {
console.log(this) // 指谁来调用Person,给this添加方法
this.color = color
this.getColor = function () {
console.log(this)
return this.color
}
this.setColor = function (color) {
console.log(this)
this.color = color
}
}
Person('red') // 只调用Person(),this是window
P.getColor() // this是P
var P = new Person('yellow') // this是P,因为P指向new对象(P也是对象,new就是在内存生成一个对象)
var obj = {}
// 调用setColor中的函数,调用call,使该函数成为obj的临时方法的临时方法进行调用,所以这里的this是obj
P.setColor.call(obj, 'black')
var test = P.setColor // 取出setColor中的函数给test,test()是直接调用的方法
test() // this是window
function fun1() {
function fun2() {
console.log(this)
}
fun2() // this是window,不属于对象的方法,在方法中的this都是window
}
fun1() // this是window
函数中的this指向
于 2024-04-17 18:18:37 首次发布