JS考题对象

124 阅读1分钟
  1. 对象之间不相等(我们都是人我们不相等)
  2. 注意引用类型这玩意相等(我是我、我也是我妈的乖女儿所以我等于我妈的女儿)
  3. 对象的key永远都是字符串类型,就算你把一个对象作为key
  4. 对象找属性|方法的规律 对象本身 > 构造函数 > 对象原型 > 构造函数原型 > 对象上一层原型找

帮助理解:张三有老婆(小a)儿子(小乐)多个外号或者身份,假设小a整容了,(引发小a变样、张三的老婆变样了,小乐的妈妈变样了)

console.log([1,2,3] === [1,2,3]) // false
// 内存指向不同,它们分别存在不同的位置
var obj1 = {
    name: 'miki'
}
var obj2 = obj1
obj2.name = 'apple'
console.log(obj1) // {name: 'apple'}

// 小a整容了,小乐的妈妈变样了
var arr1 = [1,2,3]
var arr2 = arr1
console.log(arr1 === arr2) // true
// 小a和小乐的妈妈是同一个人

var a = {age: '18', sex: '男'}
var b = {name: 'miki'}
var c = {name: 'apple'}
a[b] = '123'
a[c] = '456'

console.log(a[b]) // '456'
// 往对象里面添加对象属性,会转换成字符串[object Object],a[c]覆盖a[b]
// for(var k in a){console.log(k)} //  age、sex、[object Object]
function Fun () {
    this.name = '我是Fun'
}
Fun.prototype.name = '我是Fun的prototype'
var obj = new Fun()
obj.name = '我是obj'
obj.__proto__.name = '我是obj的__proto__'
Object.prototype.name = '我是Object的prototype'

console.log(obj.name) // 我是obj > 我是Fun> 我是obj的__proto__ > 我是Fun的prototype > 我是Object的prototype