this
Result:
aaa
2
apply(call,bind)改变函数作用域
apply、call、bind都有个作用就是改变作用域,这里用apply将foo函数的作用域指向obj对象,同时传入参数。
再简单分析一下bind函数内部的嵌套,执行bind函数的时候返回的是一个匿名函数,所以执行bar(3)的时候实际上是执行的bind内部的匿名函数,返回的是之前传入的foo函数的执行结果。
函数没有返回值的情况下默认返回undefined。
Result:
2
3
new关键字
bind函数的第一个参数为null代表作用域不变,后面的不定参数将会和函数本身的参数按次序进行绑定,绑定之后执行函数只能从未绑定的参数开始传值。
Result:
p1p2
自执行函数
创建一个立即执行的函数同时避免污染全局变量,赋值语句执行之后会返回当前值。也就是说当括号内执行完赋值之后,返回的是o对象中的foo函数。函数的执行环境中有一个a对象
Result:
2
变量属性
length属性的值是这个数组最大整数属性名加上1,不一定等于数组里属性的个数。
Result:
1
2