JS中的對象
console.log([1,2,3]===[1,2,3]),結(jié)果是false,這是為什么?
我們要知道任何的一個數(shù)組,都是通過new來創(chuàng)造出來的,所以數(shù)組之間不相等.
對象屬于引用類型

此時是obj1引用的地址賦值給了obj2,此時obj2和obj1是一樣的,這時候不論是修改obj2還是obj1中的內(nèi)容,兩者的內(nèi)容都會同時改變.
? ? ? var arr1 = [1, 2, 3];
? ? ? var arr2 = arr1;
? ? ? console.log(arr1 === arr2) 此時這時候的輸出結(jié)果就為true

由于引用類型的概念,obj2的地址賦給了obj1,此時修改obj2的值也會同時影響obj1.
下面是一個匿名函數(shù)的自調(diào)用,首先在作用域找a =>var變量提升 相當(dāng)于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"相當(dāng)于
a{
[object Object]='123'
}
之后a[c]='456'
相當(dāng)于a{
[object Object]='456'
}
覆蓋了前者
對象中屬性的查找
我們知道對象是由構(gòu)造函數(shù)構(gòu)建出來的?
console.log([1,2,3])我們看一下它的constructor 是Array
每一個函數(shù)都自帶一個prototype[原型],new Fun 該Fun(構(gòu)造函數(shù))的原型指向于對象(new Fun)的原型



那么這里打印的obj.a到底是優(yōu)先哪個呢?
obj.a>this.a>obj.__proto__.a>Fun.prototype.a>(Object.prototype.)
現(xiàn)在對象本身找=>構(gòu)造函數(shù)中去找=>去對象原型中去找=>去構(gòu)造函數(shù)原型中去找=>對象上一層原型去查找