[英]can a literal object inherit from class?
所以我在考慮文字對象是否可以從類繼承屬性和方法。 這是代碼
var Foo = function(val1, val2) {
this.prop1 = val1;
this.prop2 = val2;
}
var bar = {
//how to inherit properties from Foo class; also add new property
prop3: 'val3'
};
您的代碼中沒有繼承。 繼承看起來像這樣:
var Foo = function(val1, val2) {}
Foo.prototype={
prop1:val1,
prop2:val2
};
var bar = {
//how to inherit properties from Foo class; also add new property
prop3: val3
};
現在您可以:
Object.setPrototypeOf(bar, /*to*/ Foo.prototype);
或創建另一個對象:
var instance=new Foo();
Object.assign(instance,bar);
您可以通過創建Foo
實例,然后向該實例添加屬性來實現此目的,如下所示:
var Foo = function(val1, val2) {
this.prop1 = val1;
this.prop2 = val2;
}
var x = new Foo('valOfProp1', 'valOfProp2');
x.prop3 = 'valOfAddedProp';
您可以執行以下操作;
var Foo = function(val1, val2) { this.prop1 = val1; this.prop2 = val2; }; Foo.prototype.getProp = function(p){ return this[p]; // NOT!! this.p }; var bar = { //how to inherit properties from Foo class; also add new property prop3: "val3" }; Object.setPrototypeOf(bar,Foo.prototype); console.log(bar.getProp("prop1")); console.log(bar.getProp("prop2")); console.log(bar.getProp("prop3"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.