JavaScript冒号运算符

时间:2011-06-08 20:00:08

标签: javascript

我正在尝试学习JavaScript。阅读本页后:What does ':' (colon) do in JavaScript?

我试图替换

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

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

它不起作用。任何人都可以指出错误,或解释冒号操作符的正确使用吗? 感谢。

6 个答案:

答案 0 :(得分:9)

这不是一个公平的比较,尽管你几乎就在那里。

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语句中)

答案 1 :(得分:2)

第一个将url参数传递给所谓的构造函数或对象,它可以用它做一些事情 - 比如将它分配给其他变量或属性,例如“url2”。

第二个分配该对象的url属性,但您不知道它是否会被使用。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

您需要执行以下操作,将:替换为=

var options = {};

options.url = 'countries.json';

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

答案 4 :(得分:0)

如果第二种方式不起作用,您可能不会返回带有new dojo.data.ItemFileReadStore();的对象,这会阻止您使用点语法扩展它。如果您有一个Object,那么添加它就可以正常工作。

编辑:误读,在你正在传递一个参数的一个中,在另一个你分配给返回值,所以两个不同的东西,我将上面留下作为一个FYI。

答案 5 :(得分:0)

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

当您传递对象结构({})时,冒号在JSON中用于指定键和值之间的差异。