JavaScript冒号运算符

JavaScript colon operator

本文关键字:运算符 JavaScript      更新时间:2023-09-26

我正在努力学习JavaScript。阅读本页后:什么是';:';(冒号)在JavaScript中做什么?

我试着更换

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

带有

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

它不起作用。请任何人指出错误,或解释科隆运算符的正确使用?。谢谢

这不是一个公平的比较,尽管你几乎做到了。

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

第一个将url参数传递给所谓的构造函数或对象,后者可能会对其进行隐藏操作,例如将其分配给其他变量或属性,例如"url2"。

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

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

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

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

你需要这样做才能用=:替换:

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

如果第二种方法不起作用,您可能不会返回带有new dojo.data.ItemFileReadStore();的Object,这会阻止您使用点语法对其进行扩展。如果你有一个对象,像这样添加到它会很好。

编辑:读错了,在一个例子中你传递了一个参数,在另一个例子中将返回值赋值,所以有两件不同的事情,我将以上内容作为参考。

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

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