js 中改变this指向的几个方法

文章通过示例详细解释了JavaScript中实现对象继承的三种方法:call()、apply()和bind()。call()和apply()用于在指定上下文中调用函数,而bind()则创建了一个新函数,保持原有的this值。在示例中,Person是基础构造函数,Star是子构造函数,展示了如何通过这些方法传递属性和方法。
摘要由CSDN通过智能技术生成

call()

function Person(){
	this.name = "宁采臣"
  this.age = 26
  this.sex = "男"
}

function Star(name,age,sex){
	Person.call(this,name,age,sex)
  console.log(this.name)
  console.log(this.age)
  console.log(this.sex)
}
new Star()

apply()

function Person(){
	this.name = "宁采臣"
  this.age = 26
  this.sex = "男"
}

function Star(name,age,sex){
	Person.call(this,[name,age,sex])
  console.log(this.name)
  console.log(this.age)
  console.log(this.sex)
}
new Star()

bind()

//返回一个新的函数
let student1 = {
	name: '张三',
	say() {
		console.log('My name is ' + this.name + '\n');
	}
};
let student2 = {
	name: '李四'
}

let sayStudent2 = student1.say.bind(student2);
sayStudent2();	//	My name is 李四

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值