JS中的对象
console.log([1,2,3]===[1,2,3]),结果是false,这是为什么?
我们要知道任何的一个数组,都是通过new来创造出来的,所以数组之间不相等.
对象属于引用类型

此时是obj1引用的地址赋值给了obj2,此时obj2和obj1是一样的,这时候不论是修改obj2还是obj1中的内容,两者的内容都会同时改变.
var arr1 = [1, 2, 3];
var arr2 = arr1;
console.log(arr1 === arr2) 此时这时候的输出结果就为true

由于引用类型的概念,obj2的地址赋给了obj1,此时修改obj2的值也会同时影响obj1.
下面是一个匿名函数的自调用,首先在作用域找a =>var变量提升 相当于var a =undefined
对象的key都是字符串类型
var a = {};
var b = {
key: "a",
};
var c = {
key: "c",
};
a[b] = "123";
a[c] = "456";
console.log(a[b]); // 456
由于对象的key是字符串类型 a[b]="123"相当于
a{
[object Object]='123'
}
之后a[c]='456'
相当于a{
[object Object]='456'
}
覆盖了前者
对象中属性的查找
我们知道对象是由构造函数构建出来的
console.log([1,2,3])我们看一下它的constructor 是Array
每一个函数都自带一个prototype[原型],new Fun 该Fun(构造函数)的原型指向于对象(new Fun)的原型



那么这里打印的obj.a到底是优先哪个呢?
obj.a>this.a>obj.__proto__.a>Fun.prototype.a>(Object.prototype.)
现在对象本身找=>构造函数中去找=>去对象原型中去找=>去构造函数原型中去找=>对象上一层原型去查找