zoukankan      html  css  js  c++  java
  • 原型和闭包重点

    1、(undefined, number, string, boolean)属于简单的值类型,不是对象。函数、数组、对象、null、new Number(10)都是对象。他们都是引用类型。判断一个变量是不是对象非常简单。值类型的类型判断用typeof,引用类型的类型判断用instanceof。

    2、一切(引用类型)都是对象,对象是属性的集合对象都是通过函数创建的。

    3、每个函数function都有一个prototype,即原型。这里再加一句话——每个对象都有一个__proto__,可成为隐式原型。每个对象都有一个__proto__属性,指向创建该对象的函数的prototype。Object.prototype确实一个特例——它的__proto__指向的是null,切记切记!

    4、访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着__proto__这条链向上找,这就是原型链。

    5、变量、函数表达式——变量声明,默认赋值为undefined;this——赋值;函数声明——赋值;这三种数据的准备情况我们称之为“执行上下文”或者“执行上下文环境”。函数每被调用一次,都会产生一个新的执行上下文环境。函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域。

    5、在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。如果函数作为对象的一个属性时,并且作为对象的一个属性被调用时,函数中的this指向该对象。注意,如果fn函数不作为obj的一个属性被调用,如果fn函数被赋值到了另一个变量中,并没有作为obj的一个属性被调用,那么this的值就是window,this.x为undefined。其实,不仅仅是构造函数的prototype,即便是在整个原型链中,this代表的也都是当前对象的值。

    6、执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。其实这是一个压栈出栈的过程——执行上下文栈。

    7、要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”,切记切记——其实这就是所谓的“静态作用域”。这个一步一步“跨”的路线,我们称之为——作用域链。

    8、但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。有些情况下,函数调用完成之后,其执行上下文环境不会接着被销毁。这就是需要理解闭包的核心内容。

  • 相关阅读:
    iOS--异步下载
    linux搭建ftp服务器
    hexo常用命令
    Markdown入门
    Markdown 语法和 MWeb 写作使用说明
    vi/vim
    微信聊天机器人
    .vimrc
    配置双机
    python学习笔记(一)
  • 原文地址:https://www.cnblogs.com/ckf1988/p/5552441.html
Copyright © 2011-2022 走看看