当前位置: 首页 > Web前端 > HTML

【冰山白皮书】JS中的对象

时间:2023-04-02 11:56:12 HTML

关于我们QQ问答交流群:600633658本站链接:知乎掘金今日头条新浪微博前端网四服简书站B什么是对象就是属性,属性对应的是值的集合是无序的。除了6种原始数据类型外,所有数据都是对象。对象和原始类型的区别对象是有属性的,属性对应的值可以是原始数据类型、方法,也可以是对象。对象有方法。方法是一种特殊的属性,对应的值是一个函数。实现某个功能,可见功能也是一个对象。(回顾一下为什么StringNumberBoolean也可以使用方法或者调用属性)对象是可变的,变化的本质是对象的属性发生了变化。对象分类内部对象Error对象:Error本地对象:BooleanStringNumberArrayDateFunctionObjectRegExp内置对象:内置解释器,无需使用新建全局MathJson宿主对象运行环境提供的对象:window文档自定义object开发者自己将创建的对象的原始类型转换为对象Object(true)----{[[PrimitiveValue]]:true}Object(123)----{[[PrimitiveValue]]:123}Object("abc")——{0:'a',1:'b',2:'c',length:3,[[PrimitiveValue]]:true}Object(null)----{}Object(undefined)----{}(上面涉及到对象和原始类型的区别)对象上的两个基本方法toString表示当前对象是一个字符串。所有内部对象和宿主对象都会覆盖toString方法。BooleanStringNumber直接返回对应的字符串。Array:对数组中的每一项调用toString方法,结果用逗号连接Date:返回由日期和时间组成的字符串(不同环境结果不同)Function:返回函数体内部的源码Object:返回[objectobject]RegExp:返回正则表达式的文字串(带转义符),可以接受2到36的数字作为参数,表示要转换的内容为十进制。valueOf有原值返回原值没有原值返回Date对象本身,返回从1970年1月1日0点算起的毫秒数。对象转换为原始布尔类型:所有转换为布尔类型的对象均为真。(JS中只有6个值可以转为false)String:先调用toString方法,再调用valueOf方法Number:先调用valueOf方法,再调用toString方法,连字符,关键字或reserved单词必须使用引号(ES5中的保留字不能使用引号,但不推荐这样做)。最后一个逗号需要去掉,否则IE7及以下浏览器会报错。使用new运算符(最标准)varo=newObject()vars=newString('abcd')varn=newNumber(123)vara=newArray(3)vard=newDate(2017/04/15)vara=newArray没有参数时,不用写括号就可以使用ES5中的new方法(最准确也最麻烦)Object.creat()接受两个参数:1要继承的原型,2详细对象的描述属性的写法有两种:点或者方括号,点后面放属性名,括号里放一个表达式详解属性获取过程当JS解释器遇到“.”时或者代码中的“[]”,它会执行下面的运算,计算出“.”前面的表达式。或“[]”并获得结果。如果是undefined或者null,会直接报错。如果不是对象,则将其转换为对应的对象。如果是“.”,则查找对应的属性。如果是“[]”,则先计算“[]”中的表达式,然后将结果转化为字符串,找到对应的属性。如果属性存在,则返回对应的值;如果该属性不存在,则返回undefined