欢迎光临散文网 会员登陆 & 注册

JS中的对象

2022-11-02 12:04 作者:十叁みずき  | 我要投稿

console.log([1,2,3]===[1,2,3]),结果是false,这是为什么?

我们要知道任何的一个数组,都是通过new来创造出来的,所以数组之间不相等.

对象属于引用类型

创建obj1 obj2

此时是obj1引用的地址赋值给了obj2,此时obj2和obj1是一样的,这时候不论是修改obj2还是obj1中的内容,两者的内容都会同时改变.

      var arr1 = [1, 2, 3];

      var arr2 = arr1;

      console.log(arr1 === arr2) 此时这时候的输出结果就为true

例1

由于引用类型的概念,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)的原型

构造函数与对象
此时Fun的原型和obj的_proto_是链接起来的
查找顺序

那么这里打印的obj.a到底是优先哪个呢?

obj.a>this.a>obj.__proto__.a>Fun.prototype.a>(Object.prototype.)

现在对象本身找=>构造函数中去找=>去对象原型中去找=>去构造函数原型中去找=>对象上一层原型去查找

JS中的对象的评论 (共 条)

分享到微博请遵守国家法律