Свойства, прикрепленные к неправильному объекту

Я ' Мы адаптировали функцию 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 ().

Кто-нибудь может объяснить, почему это происходит?

1
задан Kevin Brown 20 February 2015 в 02:09
поделиться