美文网首页
JS的原型和闭包(7-9)

JS的原型和闭包(7-9)

作者: zzyo96 | 来源:发表于2019-08-06 16:56 被阅读0次

原文地址 https://www.cnblogs.com/wangfupeng1988/p/4000798.html

1.原型的灵活性--对象是所有属性的集合,对象属性可以随时改动。函数也是对象的一种,所以函数也可以改动属性,新增或者修改,如jQuery
image.png

其次,如果继承的方法不合适,可以做出修改。

image

如上图,Object和Array的toString()方法不一样。肯定是Array.prototype.toString()方法做了修改。

同理,我也可以自定义一个函数,并自己去修改prototype.toString()方法。

image.png
2.简述“执行上下文”(上)

执行上下文 (也叫 执行上下文环境)
通常在一段js代码真正一句一句运行之前,浏览器已经做了一些“准备工作”,其中就包括对变量的声明,而不是赋值。变量赋值是在赋值语句执行的时候进行的。(变量声明提前,赋值留在原地)

看代码

image.png

对于变量 只是声明(并没有赋值),而此种情况直接给this赋值。这也是“准备工作”情况要做的事情之一。

还有一种情况

image.png

总结一下,js在“准备工作”中完成了哪些工作:

变量、函数表达式——变量声明,默认赋值为undefined;
this——赋值;
函数声明——赋值;

这三种数据的准备情况我们称之为“执行上下文”或者“执行上下文环境”。

其实,javascript在执行一个代码段之前,都会进行这些“准备工作”来生成执行上下文。其中“代码段”又分三种情况——全局代码,函数体,eval代码(eval() 函数可计算某个字符串,并执行其中的 js 代码。)。

这里解释一下为什么代码段分为这三种。

所谓“代码段”就是一段文本形式的代码。

首先,全局代码是一种,就是手写文本到<script>标签里面的。

image

其次,eval代码接收的也是一段文本形式的代码。

image

最后,函数体是代码段是因为函数在创建时,本质上是 new Function(…) 得来的,其中需要传入一个文本形式的参数作为函数体。

image
3.简述“执行上下文”(下)

执行上下文环境中准备工作(定义数据):

变量、函数表达式——变量声明,默认赋值为undefined;
this——赋值;
函数声明——赋值;

如果是函数,除了上面数据的还会有其他的,看代码

image.png

以上代码展示了在函数体的语句执行之前,arguments变量和函数的参数都已经被赋值。从这里可以看出,函数每被调用一次,都会产生一个新的执行上下文环境。因为不同的调用可能就会有不同的参数。

函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域(后面讲)。

全局代码的上下文环境数据内容为:

image.png
给执行上下文环境下一个通俗的定义——在执行代码之前,把将要用到的所有的变量都事先拿出来,有的直接赋值了,有的先用undefined占个空。

相关文章

  • JS的原型和闭包(7-9)

    原文地址 https://www.cnblogs.com/wangfupeng1988/p/4000798.ht...

  • 前端开发必须知道的JS(一) 原型和继承(转载)

    前端开发必须知道的JS(一) 原型和继承 原型和闭包是Js语言的难点,此文主要讲原型及原型实现的继承,在(二)中会...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • JS-Web-Api

    JS基础知识,规定语法(ECMA262标准); 变量类型和计算 原型和原型链 作用域和闭包 异步和同步 JS We...

  • javascript面试准备(一)

    interview js 基础 原型 原型链 作用域 闭包 异步 单线程 js Api dom 操作 ajax 事...

  • 6.js-Web-API-DOM、BOM

    js基础知识:基于ECMA 262标准(规定基础语法、规则) --变量类型和计算--原型和原型链--闭包和作用域-...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • JS博客

    JS构造函数及new运算符 JS原型对象和原型链 函数作用域和作用域链 干货分享:让你分分钟学会JS闭包 深入理解...

  • js原型和闭包(10)——this

    其实,this的取值,分四种情况。我们来挨个看一下。 在此再强调一遍一个非常重要的知识点:在函数中this到底取何...

  • 原型链

    原型链 this指向 作用域和预解析 new关键字 闭包 继承 JS 规定,所有对象都有自己的原型对象(proto...

网友评论

      本文标题:JS的原型和闭包(7-9)

      本文链接:https://www.haomeiwen.com/subject/tzrwdctx.html