我已经修改了crockford object()函数,这样我就可以传入一些参数,并在新对象中自动运行init函数:
function object(o) {
function F() {}
F.prototype = o;
var params = Array.prototype.slice.call(arguments,1);
var obj = new F();
if(params.length) {
obj.init.apply(obj,params);
}
return obj;
}
这在大多数情况下都很好,但是在一个对象中,我有如下定义的函数:
MY.Object = function() {
function init(element, generator) {
build(element);
// more code after
}
function build(element) {
this._property = "example";
}
return {
init: init;
}
}();
如果我跑
My.Object2 = object(MY.Object, "test param");
出于某种原因,属性被添加到Windows对象中。如果我生成一个公共方法并使用this.build()调用它,则此操作将停止。
有人能解释为什么会这样吗?