【2-2】对象

对象

JS的简单基本类型

string,number,bollean,null,undefined,object

内置(函数)(在object基础上衍生)

  • String, Number, Boolean, Array, Object, Function, Date, RegExp, Error

  • 以上这些不要当作类型看待,当作内置的特殊函数来看待

Object和object的区别,typeof和instance of的区别

  • object是关键字,表示基本数据类型;Object是一个对象(构造函数)(Function类型的),可以被new运算符使用,构造对象实例

  • typeof 和 instanceof 这两个功能就是完全不一样的运算符。typeof 是为了检查数据类型,instanceof是为了看一个变量是否是某个对象的实例。

解释一下为什么有人说js处处皆对象

js当中数据无非就是那么集中,函数,字符串,数值类型,布尔类型

  • 函数,基本所有的函数的构造函数都是Function,至于Function的构造函数是Function,函数既然是构造函数而来,本质上也是对象实例(构造函数是Function)
  • 字符串, js中字符串本来算是基本数据类型,但是js会把字符串默认转换乘String的实例,所以基本你可以看见的字符串本质上也是对象实例(构造函数是String)
  • 数值类型,同字符串一样(构造函数为Number)
  • 布尔类型,同上(构造函数为Boolean)

对象实例的复制

  • 深复制,因为对象本质上是变量(指针)的组织,深复制一般指对象的所有层级的属性和方法都要单独生成(不能引用原来的),深复制有可能碰到循环引用的情况,就比较尴尬
  • 浅复制,最上一层复制,其余引用原来的
  • 深复制JSON.parse(JSON.stringify(obj)) 要求obj必须是JSON安全的

检查属性是否存在

举例,obj.a // undefined, 如何知道对象obj是否定义过属性a(a的值为undefined),还是没有定义过a

  • a in obj 检查属性是否在对象及其原型链中
  • hasOwnProperty 检查对象独有的属性,不检查原型,因为hasOwnProperty是原型函数,如果存在对象没有链接原型(Object.create(null)), obj.hasOwnProperty('a')会报错,所以建议使用Object.prototype.hasOwnProperty.call(obj, 'a')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容