(1)构造器属性(静态属性)是直接定义在构造函数这个对象本身上的属性,只能通过构造函数名来直接访问,原型属性是定义在构造函数原型对象上的属性,可以通过原型去访问,但更重要的是可以通过构造函数的实例去访问。比如上表Object对象的defineProperty()就只能以Object.defineProperty()的形式来调用,而hasOwnProperty()这可以在任意一个Object实例对象上调用。
(2)Object本身是一个(构造)函数,也就是Function类的一个实例,因此也就有了Function实例所具有的属性prototype和length(===1,上表未列出),同时,由于Object还是一个构造函数,也就构成了一种(内建)类型Object,通过原型继承,这个类型是ES中所有其它类型的基类,也就是说所有的对象都可以访问上表中Object的原型属性。这里原型继承是基于下面原理来实现的:Object原型的原型是null(即有Object.getPrototypeOf(Object.prototype)===null),其它对象的原型是Object的实例。
(3)Function是一个构造函数,因此构成了一种内建类型Function,同时,因为是函数,也就是一个对象,这个对象的原型对象是Object的一个实例,因而可以访问Object的原型属性(Function类中有些方法覆盖了Object中的原型方法,上表未列出)。
(4)注意区分Function类中的构造器属性和实例属性,可以这样来理解:首先Function类的所有实例都有属性prototype(函数原型对象)和length(形式参数的个数),然后因为Function本身也是一个函数,是Function类的一个实例,因此有prototype和length属性(属性值已经确定了),而这属性是直接定义在Function构造函数上的,也就是构造器属性了。
(5)其它关于Object和Function中不理解的地方可以参考前面的文章,也可以自己查阅相关资料。
3、Array与String
将Array和String这两种内置对象放在一起,主要是因为他们有一些方法比较类似,我自己就常常有搞不拎清的时候,于是借这个机会比较一下。
功能类似方法 Array对象独有方法 String对象独有方法类别 Array方法 String方法 类别 方法 说明 类别 方法 说明
方法 说明 方法 说明
共有属性 length 数组项的个数,可以修改长度来实现添加或移除数组项的功能 length 字符串中字符的个数 栈和队列 pop() 移除数组最后一项,修改数组长度,返回被移除的项 去空格 trim() 去掉字符串前后的空格
对象创建 构造函数
1、new Array([item0[,item1[,...]]])
2、new Array(len)
上面两种方式的new可以省略
构造函数new String([value])
注意:上面的new省略时,则作为类型转换函数调用
push() 接受任意个参数,把它们逐个添加到数组末尾,并返回修改后数组的长度 比较 localeCompare()对象在参数前返回负数
相等返回0
后面返回正数
数组字面量 使用方括号[] 字符串字面量 使用成对的单引号或成对的双引号 shift() 移除数组第一项并返回,修改数组长度 HTML方法 见附表 用于简化常见HTML格式化任务的方法,已经不建议使用
转换方法 toLocaleString() 调用数组每一项的toLocaleString(),然后用逗号连接起来 toLocaleString() 返回对象表示的字符串 unshift() 接受任意个参数,并添加到数组前面,返回新数组的长度 大小写转换 toLowerCase() 转小写
toString() 调用数组每一项的toString(),然后用逗号连接起来 toString() 返回对象表示的字符串 排序 reverse() 反转数组项的顺序 toLocaleLowerCase()
valueOf() 返回数组本身,即有array === array.valueOf() valueOf() 返回对象表示的字符串 sort() 默认按升序排序,可以接受一个比较函数 toUpperCase() 转大写
连接方法 join() 传入一个参数作为分隔符,将数组每一项连接起来,默认为逗号 + 字符串相加
迭代方法
两个参数:
1、执行函数(数组项的值,该项在数组中的位置,数组)