JavaScript:关于this指向问题的总结

关于this指向问题的总结

当函数以函数形式调用时,this指向window对象

function fun(){
	console.log(this)
}
fun()						//window

当函数以方法形式调用时,this指向调用该方法的对象

let obj = {
	name: "Bob",
	sayName(){
		console.log(this.name)
	}
}
obj.sayName();					//“Bob"

当函数以构造函数形式调用时,this指向新创建的对象

function Person(name){
	this.name = name;
}
let per1 = new Person("Bob")
console.log(per1.name)				//"Bob"
let per2 = new Person("Alice")
console.log(per2.name)				//"Alice"

当使用call、apply、bind调用时,this指向指定的对象

function fun(){
	console.log(this.name)
}
let obj1 = {
	name: "Bob"
}
let obj2 = {
	name: "Alice"
}
fun.call(obj1)					//"Bob"
fun.call(obj2)					//"Alice"
fun.apply(obj1)					//"Bob"
fun.apply(obj2)					//"Alice"
fun.bind(obj1)()				//"Bob"
fun.bind(obj2)()				//"Alice"

当使用箭头函数时,this指向函数定义时所在的对象

window.name = "Bob"			//全局作用域下的name
let obj = {
    name : "Alice"			//对象obj的name
}
let fun1 = function() {		//普通函数
    console.log(this.name)
}
let fun2 = () => {			//箭头函数
    console.log(this.name)
}
fun1()						//"Bob"
fun2()						//"Bob"
fun1.call(obj)				//"Alice"
fun2.call(obj)				//"Bob"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值