Я ' Мы адаптировали функцию Crockford object (), чтобы я мог передавать некоторые параметры и автоматически запускать функцию инициализации в новом объекте:
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");
По какой-то причине _property добавляется к объекту Windows. Это прекращается, если я создаю общедоступный метод и вызываю его с помощью this.build ().
Кто-нибудь может объяснить, почему это происходит?