《javscript启示录》笔记(下)
2018-12-12 本文已影响0人
月半女那
7. 作用域和闭包
a. 在javascript中作用域是执行代码的上下文,分为: 全局作用域 和 局部作用域(函数作用域)如果在函数内 部使用var 则作用域是局部的,js只有一个全局作用域,可以有无数个局部作用域
作用域链:包含函数的函数,会创建堆栈执行作用域,这些链接在一起的栈形成了作用域栈
b. 如果在不使用var来声明变量,变量则会变成在全局作用于中定义的变量,
c. 当在作用域连内最近位置查找到变量时,查找结束
d. 函数在定义时确定作用域,而非调用时确定
8. 函数原型属性、
a. js会为每个函数创建原型对象(function()构造函数额为每个实例赋一个prototype属性,默认的prototype属性是object()对象)
b. 原型链或者擦护照的最后一站是Object.prototype,和作用域链一样,原型链在链查找时将使用它找到的第一个值。(一旦在链中找到属性,查找结束,即时链中的其他地方也使用了相同的属性名称)
c. 用新对象替换prototype属性会删除默认构造函数属性
d. 由于prototype是动态的,所以实例总是能够从原型获取最新的值,不管何时被修改,实例化,附加
image.png
e.一旦创建实例 用新对象替换prototype属性不会更新以前的实例
image.png
f. 实例化想要继承的对象,将改对象实例作为要继承对象实例的还是的prototype属性
继承只是一个对象可以访问里一个对象的属性
image.png
typeof null // "object"
typeof unefined // "undefined"
null : 表示访问一个尚未存在的对象时所返回的值
undefined:访问一个未初始化的变量时返回的值