无法为对象构造器添加新属性
- 一个变量包含一个值
- 一个对象包含很多值
- {变量名:值,变量名:值,…}
- 关键字new创建对象会调用对象构造器,这很慢
- 可以把对象构造器当成java的构造函数,但是js里函数是一等公民,可以独立于对象存在,本身就是对象。
- 所以有了这种说法:可以为对象添加新属性,无法为对象构造器添加新属性
- 而JavaScript prototype 属性允许您为对象构造器添加新属性
箭头函数
箭头函数在参数和箭头之间不能换行。
//变量形式声明函数,常规的块体
var fun = (参数1, 参数2, …, 参数N) => { 代码段 最后 return 表达式; }
//简写体,省略return
(参数1, 参数2, …, 参数N) => 表达式
//没有参数的函数应该写成一对圆括号。
() => {函数声明}
在箭头函数出现之前,每一个新函数根据它是被如何调用的来定义这个函数的this值。
- 如果是该函数是一个构造函数,this指针指向一个新的对象
- 在严格模式下的函数调用下,this指向undefined
- 如果是该函数是一个对象的方法,则它的this指针指向这个对象(js函数不一定是对象的方法噢)
而箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。
箭头函数没有prototype属性。
箭头函数不绑定Arguments 对象。因此,在本示例中,arguments只是引用了封闭作用域内的arguments。