JS对象考题

2023-08-25 18:57:22发布
70

1. 对象是通过new操作符构建出来的,所以对象之间不相等(除了引用外)

2. 对象注意:引用类型(共同一个地址,浅拷贝)

3. 对象的key都是字符串类型

var a = {}
var b = {
    key: 'a'
}
var c = {
    key: 'c'
}
a[b] = '123'
a[c] = '456'
console.log(a[b])  // 456
/*
    a[b] 这里的b实际上是Object的字符串,可以看成是这样 :
    a['Object'] = '123'
    a['Object'] = '456'
*/


4. 对象如何查找属性 | 方法

先在对象本身找 ->  构造函数中找 -> 对象原型中找 -> 构造函数原型中找 -> 对象上一层原型中找

例子

function Fun() {
    this.a = 2;
}
Fun.prototype.a = 4;
let obj = new Fun();
obj.a = 1;
obj.__proto__.a = 3;
Object.prototype.a = 5;
console.log(obj.a) // 输出1

// tips 上面的1、2、3、4、5是查找属性的顺序