Pan*_*gic 2 javascript es6-class
下面我尝试创建一个 Object 的子类,其行为类似于 Object 在使用“new”创建实例方面的行为。我当然会向我的子类添加更多方法,但下面显示了我从构造函数中调用超级构造函数的问题。
为什么我的类 Sub 的实例不像普通对象那样具有字段“x”,当使用“new”和相同的参数以相同的方式创建时?
class Sub extends Object
{ constructor (anObject)
{ super(anObject);
}
}
var ob = new Object ({x: 123} );
var sub = new Sub ({x: 123} );
console.log( ob.x ); // -> 123
console.log( sub.x); // -> undefined
Run Code Online (Sandbox Code Playgroud)
基本上,becauseObject很特殊并且遵循不同的规则,因为它几乎是 JavaScript 中最基本的构造。
不要扩展Object,只需创建没有超类的对象(因为它无论如何都是一个 Object )并使用Object.assign(this, obj)将所有属性分配给新创建的对象。
class Sub {
constructor(obj) {
Object.assign(this, obj);
}
}
console.log(new Object({a: 1}));
console.log(new Sub({a: 1}));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |