2016-01-09 11 views
2

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

У меня есть пространство имен form, чтобы получить доступ к моей HTML-форму:

var form = (function(){ 
    all = function() $('#myform .entry'); 
    first = function() $('#myform .entry').first(); 
})(); 

form.all.css('color', 'blue'); 
form.first.css('color', 'red'); 

Желаемая дополнительное поведение:

form.css('background-color', 'green'); // should be calling $('#myform') 

Возможно ли это?

ответ

2

У вас нет пространства имен, у вас есть объектный литерал, содержащий функции (и теперь вы его отредактировали и добавили IIFE, что делает еще меньше смысла), и функции должны возвращать что-то, чтобы быть в состоянии использовать его

var form = { 
    all : function() { 
     return $('#myform .entry'); 
    }, 
    first : function() { 
     return $('#myform .entry').first(); 
    } 
} 

form.all().css('color', 'blue'); 
form.first().css('color', 'red'); 

или если вы хотите сохранить коллекцию в объекте, не глядя в DOM каждый раз, когда

var form = $('#myform'); 

form.all = $('#myform .entry'); 
form.first = $('#myform .entry').first(); 

form.all.css('color', 'blue'); 
form.first.css('color', 'red');