对象需要分类吗?

有很多对象拥有一样的属性和行为,需要把他们分为同一类,如:square1 和 square2 。这样创建类似对象时候就很方便。
但是还有很多对象拥有其他的属性和行为所以就需要不同的分类。比如 Square / Circle / Rect 就是不同的分类 ,Array / Function 也是不同的分类,而 Object 创建出来的对象,是最没有特点的对象。

数组对象

定义一个数组
let arr = [1,2,3]
let arr = new Array(1,2,3)//元素为1,2,3
let arr = new Array(3)//长度为3

数组对象的自身属性
‘0’ / ‘1’ / ‘2’ / ‘length’
注意,属性名没有数字,只有字符串
image.png

数组对象的共用属性
‘push’ / ‘pop’ / ‘shift’ / ‘unshift’ / ‘join’
MDN Array

函数对象

定义一个函数
function fn (x, y) {return x+y}
let fn2 = function fn(x, y){return x+y}
let fn = (x,y) => x+y
let fn = new Function (‘x’, y’, ‘return x+y)

函数对象自身属性
‘name’ / ‘length’

函数对象共用属性
‘call’ / ‘apply’ / ‘bind’

window 是谁构造的

小写window 是 大写Window构造的
image.png

window.Object 是谁构造的

window.Function 构造的
因为所有函数都是 window.Function 构造的
image.png

window.Function 是谁构造的

window. Function 构造的
因为所有函数都是 window. Function 构造的
自己构造的自己?并不是这样,这是「上帝」的安排
浏览器构造了 Function,然后指定它的构造者是自己
image.png

ES6新语法

https://fangyinghang.com/es-6-tutorials/