Mac*_*ski 5 javascript constructor ecmascript-6
你能解释一下在使用时如何实现继承class吗?
当我function用于定义构造函数时,一切正常(参见代码版本 1)。但是当我变成functionES2015 class(版本 2)时,它会产生这个错误:
未捕获的类型错误:类构造函数 Person 不能在没有“new”的情况下被调用
我需要在代码中添加一些东西还是应该保持原样function?
functionfunction Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
function Customer(firstName, lastName, phone, membership) {
Person.call(this, firstName, lastName);
this.phone = phone;
this.membership = membership;
}
const customer1 = new Customer("Tom", "Smith", "555-555-555", "Standard");
console.log(customer1);Run Code Online (Sandbox Code Playgroud)
classclass Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
class Customer {
constructor(firstName, lastName, phone, membership) {
Person.call(this, firstName, lastName); // <--- TypeError
this.phone = phone;
this.membership = membership;
}
}
const cust1 = new Customer("Bob", "Johnes", "555-222-333", "Silver");
console.log(cust1);Run Code Online (Sandbox Code Playgroud)
事实上,Person.call()当用Person定义时是不允许的class。ES2015 提供了extends和super关键字来实现这样的原型链定义:
class Customer extends Person {
constructor(firstName, lastName, phone, membership) {
super(firstName, lastName);
this.phone = phone;
this.membership = membership;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |