- 作为函数调用
- 作为方法调用
- 作为构造函数调用
- 使用call和apply方法间接调用
方法就是函数作为一个对象的属性,方法和函数的本质区别就是调用上下文,作为方法调用都会隐式引用一个实参,这个实参就是调用这个方法的母体,在不是作为方法调用的函数中,this指向全局对象或undefined。
构造函数没有返回值,或者返回一个原始值,都会返回自己创建的对象
宁愿程序在传入非法值时报错,也不愿非法值导致程序在执行时报错,相比而言,逻辑执行时的报错信息不甚清晰且更难处理。 当传入值的类型不对时,应该使用throw报错
函数的作用域链是在函数定义的时候创建的
闭包在外部函数里,是无法访问this的, 可以声明一个变量保存
var self = this;闭包使用的arguments是自身的,而不是外部函数的 同样可以声明一个变量保存
var outerArguments = arguments;apply方法的第二个参数除了数组还可以是类数组对象