このオブジェクトを変換/複製する動的な方法はありますか:
var object = {
a: 2,
b: function(){
return this.a;
}
}
この種の関数オブジェクトに:
function object(){};
object.a = 2;
object.b = function(){
return this.a;
};
これは可能ですか?どうすれば動的に行うことができますか?
このオブジェクトを変換/複製する動的な方法はありますか:
var object = {
a: 2,
b: function(){
return this.a;
}
}
この種の関数オブジェクトに:
function object(){};
object.a = 2;
object.b = function(){
return this.a;
};
これは可能ですか?どうすれば動的に行うことができますか?
プロトタイプを使用しますが、すべてをコピーできます。
function toClass(obj) {
var func = function () {};
for(var i in obj) {
if(obj.hasOwnProperty(i)) {
func.prototype[i] = obj[i];
}
}
return func;
}
もう 1 つの問題は、これが実際にどれほど有用であるか、および根本的な問題に対するより良い解決策があるかどうかです。
そのようなものが必要になるのは少し奇妙です。推測する必要がある場合は、オブジェクトがあり、それを拡張したいと考えています。つまり、そのオブジェクトに基づいて関数を作成したいので、後でそのオブジェクトの複数のインスタンスを作成します。それは可能であり、ここにその方法を示す小さなスニペットがあります:
var object = {
a: 2,
b: function(){
return this.a;
}
}
var extend = function(obj) {
return function() {
return Object.create(obj);
}
};
var Class1 = extend(object);
var ob1 = Class1();
ob1.a = 10;
var Class2 = extend(object);
var ob2 = Class2();
ob2.a = 23;
console.log(ob1.b(), ob2.b());
スクリプトの結果は
10 23