我想要做的是这样的:的Javascript功能转换声明为功能字典原型
我的基本代码:
var Obj = function() {
this.do = function() {};
this.stop = function() {};
this.kill = function() {};
};
Obj.prototype.load = function() {};
需要的转换:
var ConvObject = function() { };
ConvObject.prototype = (typeof Obj == "function")? new Obj : Obj;
这示例作品(用于转换部分)。在ConvObject中,Obj的所有方法都在那里。但在我的情况下,我不想执行Obj的默认构造函数。我宁愿避免这一点。的确,我不想执行新的Obj。
我试过不同的方法来完成这个。这里是最好的答案我可以现在发现:
var getSizeOf = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
var ConvObject = function() { };
if ((typeof Obj == "function") && getSizeOf(Obj.prototype) == 0) {
ConvObject.prototype = new Obj;
}
else {
ConvObject.prototype = (typeof Obj == "function")? Obj.prototype : Obj;
}
这工作时的OBJ看起来是这样的:
var Obj = new function() {};
Obj.prototype.do = function() {};
Obj.prototype.stop = function() {};
Obj.prototype.kill = function() {};
Obj.prototype.load = function() {};
或者,如果它看起来像这样:
var Obj = function() {
this.do = function() {};
this.stop = function() {};
this.kill = function() {};
this.load = function() {};
};
但是,这解决方案失败时,我有上面的基本代码。我怎样才能避免这个调用默认的构造函数? 感谢您的帮助!
是的,但他不想调用构造函数。由于在这种情况下构造函数的代码是将属性添加到对象的唯一方法,因此只能通过调用构造函数来获取它们。 – Pointy
你是对的。我必须调用构造函数才能拥有这些功能。谢谢你的回答! – Jeep87c