我试图用Javascript连接对象的创建。这对于方法来说很容易,但是对于构造函数来说却不容易。我无法更改创建对象的方式,因为这必须适用于当前库。
Function.prototype.afterConstruction = function(hookFunc) {
var oldObj = this;
var newObj = function() {
oldObj.apply(oldObj, arguments);
hookFunc.apply(oldObj, arguments);
}
newObj.prototype = oldObj.prototype; //copy prototype fields of oldObj
for (var key in oldObj) { //copy static fields of oldObj
if (oldObj.hasOwnProperty(key)) newObj[key] = oldObj[key];
}
return newObj;
};
使用方法如下:
SomeObj = SomeObj.afterConstruction(function() {
//executed after SomeObj construction
});
以下jsfiddle中显示了此问题:
http://www.jsfiddle.net/6rBTZ/1/
如果您使用firebug运行它,它将为您提供一个thisInstance.onTextChange不是函数,因为前面对这个对象的afterConstruction调用。