0
点赞
收藏
分享

微信扫一扫

JS this的三种指向+练习

新鲜小饼干 2022-04-03 阅读 69
javascript

JS this的三种指向+基础练习

文章目录

事先提示:

正常情况下:

普通函数

function one(){
  console.log(this);  ==>window
}
one()

对象

const xWang = {
 name: "小王",
 age: 18,
 intro: function () {
   console.log(this) 
//==>指向自身{ name: '小王', 
//age: 18, intro: [Function: intro] }
 }
}
xWang.intro()

构造函数

function People(name, age) {
  this.name = name
  this.age = age
  this.intro = function () {
    console.log(this);
  }
}
let xMin = new People("小明", 20)
let xBai = new People("小白", 10)
xMin.intro()
//==>People { name: '小明', age: 20, intro: [Function (anonymous)] }
xBai.intro()
//==>People { name: '小白', age: 10, intro: [Function (anonymous)] }

this指向练习:

练习1

var obj1 = {
	name:"张三",
	eat:function(){
		console.log(this.name);==>张三 
		obj2.eat()
	}
}

var obj2 = {
	name:"李四",
	eat:function() {
		console.log(this.name) ==>李四
	}
}
obj1.eat()

练习2

var obj = {
  name: "pig",
  showName: function () {
    fn1()
  }
}

function fn1() {
  console.log(this.name) ==>undefined
}
obj.showName()

练习3

const one = {
name: "小白",
show: function () {
  console.log(this); ==>指向对象one
  setTimeout(this.count, 300); ==>调用count函数
},
count: function () {
  console.log(this); ==>指向window
}
}

练习4

const one = {
 name: "小白",
 show: function () {
  setTimeout(
    this.count(), 300);
 },
 count: function () {
  return function () {
  	console.log(this) ==>window
    console.log(3 + this.num); ==>NaN
  }
 }
 }
 
 one.show()
举报

相关推荐

0 条评论