JavaScript Object使用toString,objecttostring
分享于 点击 28333 次 点评:62
JavaScript Object使用toString,objecttostring
今天偶然看到个js面试题目,问控制台输出信息是什么。
var a = {};
var b = {name:"ZS"};
var c = {};
c[a] = "demo1";
c[b] = "demo2";
console.log(c[a]);
console.log(c);
首先,a为空对象,b为name属性值为ZS的对象,c也为空对象;
之后,依次给c添加属性分别为a、b,值为demo1、demo2;
打印输出结果依次为:demo2(确实是demo2不是demo1);
Object {[object Object]: "demo2"}。
疑惑的地方主要在于:第一行结果的demo2。
代码里的c[a]、c[b]隐式的将对象a,b使用了toString()方法进行了转换,然后再对属性赋值。
测试代码如下:
var a = {};
var b = {name:"ZS"};
var c = {
"[object Object]":"demo"
};
console.log(c[a]);//demo
c[a] = "demo1"; //这里接console.log(c); 输出为Object {[object Object]: "demo1"}
c[b] = "demo2"; //这里接console.log(c); 输出为Object {[object Object]: "demo2"}
console.log(typeof a);//object
console.log(a.toString());//[object Object]
console.log(a.toString() === b.toString());//true 说明返回值是一样的
console.log(c[a]);//demo2 被c[b]复写结果的缘故
console.log(b);//Object {name: "ZS"}
console.log(c);//Object {[object Object]: "demo2"}
测试代码写到这里,结果就非常明显了。
相关文章
- 暂无相关文章
用户点评