2017-03-05 50 views
2

我聲明一個私有字段的對象,其中一些私人對象字段依賴於兄弟對象值的值。我將如何訪問它們?如何從對象的孩子兄弟姐妹中訪問對象的孩子值?

例子:

我想訪問:private.fields.url

來源:private.options.static

我需要在這裏減少重複:

var Hi = (function (parent, $) { 
 
\t var public = parent.Page = parent.Page || {}; 
 

 
\t var private = { 
 
\t \t fields: { 
 
\t \t \t url: '#page_url' 
 
\t \t }, 
 
\t \t options: { 
 
\t \t \t static: [ 
 
\t \t \t \t '#page_url' 
 
\t \t \t ] 
 
\t \t } 
 
\t }; 
 

 
\t var form = function() { 
 
\t \t var form = $('form[name=page]'); 
 
\t \t var type = form.find('#page_type'); 
 

 
\t \t // hide all fields 
 
\t \t initialHideFields(type); 
 
\t }; 
 

 
\t var initialHideFields = function (type) { 
 
\t \t var selected = type.find('option:selected'); 
 

 
\t \t if (selected.length) { 
 
\t \t \t console.log(selected.text()); 
 
\t \t } 
 
\t \t else { 
 
\t \t \t $.each(private.fields, function (key, value) { 
 
\t \t \t \t $(value).parent().hide(); 
 
\t \t \t }); 
 
\t \t } 
 
\t }; 
 

 
\t public.init = function() { 
 
\t \t form(); 
 
\t }; 
 

 
\t return parent; 
 
}(Hi || {}, window.jQuery)); 
 

 
$(function() { 
 
\t Hi.Page.init(); 
 
});

回答

1

您無法引用/訪問同一對象內的對象屬性。相反,你可以做這樣的事情:

var private = { 
 
      fields: { 
 
       url: '#page_url' 
 
      }, 
 
      options: { 
 
       static: [] 
 
      } 
 
     }; 
 
private.options.static.push(private.fields.url); 
 
console.log(private.options.static);

+0

我希望更多的東西動態,前調用裏面的選項。 – HelpNeeder

+0

不幸的是,我不能使用這個,所以不能接受它。抱歉。 – HelpNeeder

+0

@HelpNeeder你可以通過'callable inside options'來表達什麼意思?你能詳細說明一下嗎? – m87

相關問題