JavaScript冒号运算符

问题描述:

我正在学习JavaScript。阅读此页之后:What does ':' (colon) do in JavaScript?JavaScript冒号运算符

我试图取代

var store = new dojo.data.ItemFileReadStore({ 
     url: "countries.json" 
}); 

var store = new dojo.data.ItemFileReadStore(); 
     store.url = "countries.json"; 

它不工作。任何人都可以指出错误,或者解释Colon操作符的正确使用方法吗? 谢谢。

这不是一个公平的比较,但你几乎没有。

var store = new dojo.data.ItemFileReadStore({ 
     url: "countries.json" 
}); 
//Creates a new store object, passing an anonymous object in with URL 
// property set to "countries.json" 

没有结肠操作者另一种方法是:

var props={}; 
props.url="countries.json" 
var store = new dojo.data.ItemFileReadStore(props); 
//Does same as above but doesn't use : 

不是这不是唯一的用途在JavaScript :虽然,它也可以在三元运算符(alert(b==c?'equal':'not equal');)使用,并且在标签(例如在case语句中)

+2

哦,我明白了,所以在第一个片段中,商店对象是使用“url”构造的,但是在替换代码片段中,我创建了一个空白对象,并设置了一个它的财产。非常感谢所有的帮助!我曾尝试在网上查看几个小时,没有任何影响。再次感谢。 – rgamber 2011-06-08 20:15:07

+0

如果'ItemFileReadStore()'返回一个对象,那么就是发生了什么。不同之处在于(1)你在传递一些东西(这大概意味着某些东西在函数中),而(2)你在事后设置一个值。 – Rudu 2011-06-08 20:19:01

+0

是的,有道理:) – rgamber 2011-06-08 20:21:37

在第一个代码中,您将创建一个新对象并将其作为参数传递给该函数。

而在第二部分中,您正在运行该功能,然后,您正在设置存储对象的属性。 它们是完全不同的东西,因为你不用参数调用函数,所以它可能无法正常运行。并且您正在设置函数返回到对象。不设置财产。

在这种情况下,第一个示例中的对象字面量将用于将一组选项传递给构造函数。构建ItemFileReadStore然后试图设置这些选项可能不是等同的,因为它可能需要它们才能构建开始的对象。

你需要做这样的事情与=更换:

var options = {}; 

options.url = 'countries.json'; 

var store = new dojo.data.ItemFileReadStore(options); 

第一个通过url参数所谓的构造函数或对象,可以做一些事情引擎盖下吧 - 例如将其分配给其他变量或属性,例如“url2”。

第二个指定url属性的那个对象,你不知道它是否会被使用。

如果第二种方法不工作,你可能不返回与new dojo.data.ItemFileReadStore();的对象,它可以防止您使用点语法扩展它。如果你有一个对象,像这样添加就可以。

编辑:误读,在一个你传递一个参数,在其他你指定的返回值,所以两个不同的东西,我会离开上述作为供参考。

dojo.data.ItemFileReadStore对象可能要求在创建对象时存在url属性。如果不是的话,那么该对象不允许您手动设置该属性,您已初始化对象之后。

冒号在JSON用于指定一个键和值之间的不同,当你传递一个对象结构({})。