我正在嘗試使用檔案資料庫構建一個 javascript 應用程式,該應用程式可以在沒有函式成員的情況下存盤和檢索物件資料(作為 api 提供)。
現在我有一個類,它有許多屬性和一些函式作為原型。
Project: function(){
this.a= 'abc';
this.f = function(){
console.log(this.a);
}
}
//object from the databse
p0 = {
a: 'abc';
}
我想將普通物件轉換為具有可用成員函式的物件。
當我嘗試這樣的事情時,它不起作用:
// It won't work:
// for it needs a map that have many properties such as writable etc.
var pobj = Object.create(new Project(), p0);
我試圖在互聯網上用不同的關鍵字搜索這個問題,但沒有找到相關的。
uj5u.com熱心網友回復:
您可能想要使用的功能是Object.assign.
因此,您可以使用Object.create來創建類的實體(使用原型),然后將資料中的值分配給新實體,然后呼叫建構式(確保不要覆寫這些值)。
function Project() {
if (this.foo === undefined) this.a = 'foobar';
return this;
}
Project.prototype.print = function() {
console.log(this.foo);
};
var data = {
foo: 'bar'
};
var obj = Object.create(Project.prototype); // empty instance
obj = Object.assign(obj, data); // copy data
obj = obj.constructor(); // start constructor
obj.print();
或者,您可以使用new運算子創建一個新實體,然后分配資料。
function Project() {
this.a = 'foobar';
return this;
}
Project.prototype.print = function() {
console.log(this.foo);
};
var data = {
foo: 'bar'
};
var obj = Object.assign(new Project(), data);
obj.print();
不相關的注釋 通常使用以下方法宣告不需要在函式體外部關閉的公共函式 class.prototype.functionName = function(){...}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/384536.html
標籤:javascript 目的 原型 克隆
