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
语句中)
在第一个代码中,您将创建一个新对象并将其作为参数传递给该函数。
而在第二部分中,您正在运行该功能,然后,您正在设置存储对象的属性。 它们是完全不同的东西,因为你不用参数调用函数,所以它可能无法正常运行。并且您正在设置函数返回到对象。不设置财产。
在这种情况下,第一个示例中的对象字面量将用于将一组选项传递给构造函数。构建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用于指定一个键和值之间的不同,当你传递一个对象结构({}
)。
哦,我明白了,所以在第一个片段中,商店对象是使用“url”构造的,但是在替换代码片段中,我创建了一个空白对象,并设置了一个它的财产。非常感谢所有的帮助!我曾尝试在网上查看几个小时,没有任何影响。再次感谢。 – rgamber 2011-06-08 20:15:07
如果'ItemFileReadStore()'返回一个对象,那么就是发生了什么。不同之处在于(1)你在传递一些东西(这大概意味着某些东西在函数中),而(2)你在事后设置一个值。 – Rudu 2011-06-08 20:19:01
是的,有道理:) – rgamber 2011-06-08 20:21:37