2017-03-05 46 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

相关问题