Rat*_*Lal 12 super ecmascript-6
根据ES6速记初始化,以下两种方法是相同的:
var person = {
name: "Person",
greet: function() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
var person = {
name: "Person",
greet() {
return "Hello " + this.name;
}
};
Run Code Online (Sandbox Code Playgroud)
ES6的方式与之前的方式有什么不同吗?如果不是那么在它们里面使用"超级"也应该被视为相等,这不符合,请看下面的两个变量:
let person = {
greet(){
super.greet();
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
Run Code Online (Sandbox Code Playgroud)
let person = {
greet: function(){
super.greet(); // Throw error: Uncaught SyntaxError: 'super' keyword unexpected here
}
};
Object.setPrototypeOf(person, {
greet: function(){ console.log("Prototype method"); }
});
person.greet();
Run Code Online (Sandbox Code Playgroud)
上面两个例子的唯一区别是我们声明方法greet in person对象的方式,它应该是相同的.那么,为什么我们会收到错误?
Fel*_*ing 23
那么,为什么我们会收到错误?
因为super只在内部方法有效.greet: function() {}是一个"普通"属性/函数,而不是一个方法,因为它不遵循方法语法.
方法和正常函数定义之间的区别是:
super.new.| 归档时间: |
|
| 查看次数: |
11571 次 |
| 最近记录: |