繁体   English   中英

对象[foo]术语是什么意思?

[英]What does the object[foo] term mean?

我很困惑object[foo]术语指的是什么。 任何提示? 我知道bar['unique_prop']bar.unique_prop指的是2

    var foo = {unique_prop: 1};
    var bar = {unique_prop: 2};
    var object = {};
    object[foo] = 'value';
    alert(object[bar]);

关于jsfiddle的代码

这个:

var foo = 'abc';
object[foo]

相当于:

object.abc

不过这个:

var foo = {unique_prop: 1};
object[foo] = 'value';

没有多大意义(对象属性名称不能是对象文字)。 JS引擎将使用foo.toString() (返回例如"[object Object]" ),所以实际上你这样做:

var foo = {unique_prop: 1};
object["[object Object]"] = 'value';

这显然是一个错误或误解。 MDN上的成员操作员解释了此行为:

属性名称必须是字符串。 这意味着非字符串对象不能用作对象中的键 任何非字符串对象(包括数字)都通过toString方法进行类型转换为字符串

但是你可以使用:

object[foo.unique_prop] = 'value';

这相当于:

object[1] = 'value';

它与object.whatever_x_is相同,其中xfoo.toString() ,它与bar.toString()相同,因为(除非被覆盖)在泛型对象上调用toString将生成泛型“is a object”字符串,如"[object Object]"

object[foo] = 'value';

尝试使用对象作为成员名称,这会导致.toString()调用;

当你试图读取alert(object[bar]); 'value'被赋值给object["[object Object]"] alert(object[bar]); 同样的toString()发生,因为bar也是一个对象,所以再次引用object["[object Object]"]并返回'value '。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM