看大神文章的总结
- “一切都是对象”
- 对象都是通过函数来创建的。
- 函数也是一种对象。
- 每个函数都有一个属性 -> prototype
- 每个对象都有一个隐藏的属性 - > __proto__
- 对象的__proto__ === function.prototype
- typeof 检测值类型
- instanceof 判断引用类型 (区分属性是基本的还是原型中 -> hasOwnproperty ,特别在for .. in ... 过滤掉原型中的属性)
- 所有对象的原型链都会找到Object.prototype 这就是“继承”
- 每个函数都有call 、 apply 方法,有length、arguments、caller (函数由Function函数创建,继承Function.prototype中的方法)
- 执行上下文环境 -> 执行之前,将要用的先拿出来,有的赋值、有的underfied
- *** 在函数中this 到底取何值, 是在函数真正被调用执行时确定
- / 函数作为对象的一个属性
- 如函数作为对象的一个属性,并且作为对象属性被调用时,this指向该对象
- 全局和调用普通函数,其中this也都是window
- javascript 没有块级作用域, 只有函数可以创建作用域
- // ** 作用域 在函数定义时就已经确定了,而不是在函数调用时确定
- 如果要查找一个作用域下某个变量的值,就需找到这个作用域对应执行上下文环境
- 静态作用域 = > 要到创建这个函数的那个作用域取值,“创建” 不是“调用”
- 闭包应用的两种情况:
- 1.函数作为返回值 2. 函数作为参数传递