我正在尝试学习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";
它不起作用。任何人都可以指出错误,或解释冒号操作符的正确使用吗? 感谢。
答案 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中用于指定键和值之间的差异。