编辑:改变问题和标题,以反映我的意图,根据菲利克斯的建议
我想要做的是创建一个子对象"obj",其工作方式如下:
upperMostObject.obj //This is an image
upperMostObject.obj.src //This is an attribute of the image
Run Code Online (Sandbox Code Playgroud)
以及我希望能够创造它的方式,也就是我想要实现的目标
var imgCollection = {
catImage: document.createElement("img"),
catImage: {
src: "http://whatever.source.com/image.png",
width: 30,
height: 30,
},
}
Run Code Online (Sandbox Code Playgroud)
但前者在这种情况下catImage: document.createElement("img")会被覆盖.
您需要使用String 对象(不是原始对象),或toString()为对象定义自定义方法.
第一种方法:
var upperMostObject = {};
upperMostObject.obj = new String("topValue"); // as a String object
upperMostObject.obj.subObj = "subValue";
Run Code Online (Sandbox Code Playgroud)
这是因为字符串原语不能保存属性,而String对象可以.
当String你使用松散的equals(==)进行比较时,要注意使用对象时,你不能使用严格的equals(===).也typeof someStringObject将是"object",不是"string".
第二种方法(可以"一次完成"):
var upperMostObject = {
obj: {
toString: function(){return "topValue"},
subObj: "subValue"
},
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为无论upperMostObject.obj == 'topValue'何时将对象强制转换为字符串(例如),它都会在内部调用其toString方法.