JavaScript进阶系列-引用类型

我的博客仓库

引用类型

用来放一些我看的书籍和学习的记录,欢迎点赞和讨论。


引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。

有句话叫万物皆对象不是没有道理的。现在来了解下 JavaScript 的 Object 对象。 ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中,所以理解了 Object 对象,就可以更好地理解其他对象。

属性

  • constructor 对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始 Object() 函数
  • Prototype 对该对象的原型对象的引用。 通常用来获取对象的原型对象,默认返回 Object 对象的一个实例。 方法
  • hasOwnProperty(String) 是否有某个属性
  • IsPrototypeOf(object) 判断该对象是否是某个对象的原型(父是该对象)
  • PropertyIsEnumerable 返回一个 boolean 值,是否可枚举(enumberable)
  • ValueOf() 返回该对象的原始值

JavaScript 对象

  • Array
  • Number
  • Boolean
  • Date
  • String
  • Math
  • RegExp
  • Global

Browser 对象

  • Window
  • Navigator
  • Screen
  • History
  • Location

总结

内存角度来讲

原始类型保持在栈中,占用固定内存用来保持原始值。 引用类型保存在堆中,变量只负责保存引用类型的地址。

赋值语句执行区别,赋值语句是将变量保存的值复制一份到新的变量中,原始类型保存的是值,而引用类型保存的是引用类型的引用。

原始类型

  • typeof 来检查原始类型类型( typeof null // object)

引用类型

  • object instanceof constructor 来检查引用类型的原型
  • new constructor 创建引用类型实例
new String(123) instanceof String // true
复制代码

如上图 String 对象和 Array 对象有些类似是一个数组+length属性,不过可以观察原型链,他们实现还是不一样的,而且对象原型都 Object 。

对象参考手册

问题:对象的底层数据结构是什么?

答:上面的对象的数据结构。

问题:JavaScript中的变量在内存中的具体存储形式?

问题:理解值类型和引用类型?

问题:至少可以说出三种判断 JavaScript数据类型的方式,以及他们的优缺点,如何准确的判断数组类型?

转载于:https://juejin.im/post/5cd4354c51882541cd486594

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值