js关键字this的详解

在javascript中this是一个关键字,this的指向跟它的使用场景有关,而且this的指向只有在它使用时才能确定,定义时是无法确认的。但总的来说,this指向的是调用函数的对象。在this的使用过程中有大概4种场景,具体如下。

var a = {
  name: 'name',
  fn:function(){
    console.log(this.name)
  }
}
a.fn()  // this === a
a.fn.call({name:'addname'}) // this === {name:'addname'}
var fn1 = a.fn
fn1() // this === window

场景1:作为构造函数调用

function Foo(name){
  this.name = name
}
var f = new Foo('path')
扩展:
new一个构造函数返回一个对象的过程:
1).把参数传到构造函数,如果没有参数的话就不用传到构造函数
2).首先把this变成一个空对象
3).属性的赋值
4).return this
这个时候返回的对象就具有构造函数的属性

this指向的时生成的新对象

场景2:作为对象属性进行调用

var obj = {
  name:'A',
  printName:function(){
    console.log(this.name)
  }
}
obj.printName()

this指向的是上级对象

场景3:作为普通函数进行调用

function fn(){
  console.log(this) // 指向window
}
fn()

this指向的是window

场景4:call apply bind 进行调用

funtion fn(name){
  console.log(name)
  console.log(this)
}
fn.call({x:100},"name":"zhang") // this== {x:100}

this指向第一个参数。

总之,this的指向,只有在函数执行时才能确认,定义时是无法确认的。本文结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值