2015-09-04 2 views
3

Фактически им просто изучают JavaScript modules. Они довольно легко, но я застрял в том, когда дело доходит до нескольких instances одного модуля здесь мой кодМодули Javascript несколько экземпляров

var Mod = (function() { 
    var ops; 
    ops = function() { 
     var Num; 
     this.set = function (e) { 
      Num = e; 
      return this; 
     }; 
     this.get = function() { 
      return Num; 
     }; 
    }; 
    return new ops(); 
})(); 

, но когда я делаю

console.log(a = Mod.set(1)); 
console.log(b = Mod.set(2)); 
console.log(a.get()); // output 2 :'(
console.log(a == b); // true :/ 

я не могу понять, почему это происходит? может быть потому, что Mod анонимная функция звонит только один раз, но теперь мой вопрос: как работает JQuery $? в

a = $("div") 
b = $("span") 
console.log(a == b) // false 

и как я могу добиться такого поведения с моей Mod я должен пойти на другую технику программирования? но я не хочу использовать ключевое слово new заранее! вот fiddle

ответ

2

Почему это происходит? может быть из-за того, что функция анонимной модификации вызывает только один раз

Да, вы понимаете это правильно. У вас есть только один экземпляр, единственный объект, поэтому a действительно просто другое имя для b.

, но теперь мой вопрос, как работает JQuery $?

JQuery создает новые экземпляры должным образом (см source code), кстати с new ключевым словом, которое вы не хотите использовать для какой-либо причины.

UPD.. Ниже приведено одно из следующих действий для правильной ин формации:

var Mod = (function() { 

    function ops(value) { 
     this.value = value; 
    } 

    ops.prototype.get = function() { 
     return this.value; 
    }; 

    return { 
     set: function(value) { 
      return new ops(value); 
     } 
    }; 
})(); 

console.log(a = Mod.set(1)); 
console.log(b = Mod.set(2)); 
console.log(a.get()); 
console.log(a === b); 
+0

то как его достичь? – maq

+0

bcoz в jquery мы не используем 'new' – maq

+0

спасибо за код jquery, но все же я не могу понять, как я могу использовать его здесь? – maq

Смежные вопросы