ES6学习-super关键字

说明:本文参考阮一峰的ECMAScript 6 入门

super关键字

我们知道,this关键字总是指向函数所在的当前对象。ES6又新增了一个super关键字,指向当前对象的原型对象。

const proto= {
	foo: 'hello'
}

const obj = {
	foo: 'world',
	//ES6方法的简写形式
	find(){
		return super.foo
	}
}

Object.setPrototypeOf(obj, proto)
obj.find() //hello

上面代码中,对象obj的find()方法中,使用super返回了原型对象proto的foo属性。
注意,super关键字表示原型对象时,只能在对象的方法中使用,用在其他地方都会报错。

//报错SyntaxError: 'super' keyword unexpected here
const p = {
	foo: super.foo 
}

//报错SyntaxError: 'super' keyword unexpected here
const obj = {
	foo: () => super.foo
}

//报错SyntaxError: 'super' keyword unexpected here
const obj = {
  foo: function () {
    return super.foo
  }
}

上面三种super的用法都会报错,因为对于 JavaScript 引擎来说,这里的super都没有用在对象的方法之中。例一是在对象中,而例二例三报错,是因为目前,只有对象方法的简写法可以让 JavaScript 引擎确认,定义的是对象的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值