美文网首页
JavaScript02(沙箱,闭包)

JavaScript02(沙箱,闭包)

作者: 鱼翅大魔王 | 来源:发表于2018-11-13 20:37 被阅读0次

2018年11月13日

先记一下三个方法

1.apply和call方法

这两个方法作用相同,都是修改this的指向,差别在于传参的区别,前者需要使用[],后者则是参数形式,如下:
fun.apply(obj,[1,2,3,4]);
fun.call(obj,1,2,3,4);

2.bind方法

该方法用于复制函数,返回值是被复制的函数。

闭包和沙箱

3.闭包

为了解决缓存问题,使用闭包,闭包存在函数闭包和对象闭包。
        function f1() {
          var value = 1;
          return function() {
            this.innerText = "赞(" + value++ + ")";
          };
        }
如上代码中,函数f1()中包裹了一个匿名函数,该匿名函数扩展了value的作用域,使得value可以继续使用,同时我们在外部调用的时候使用的是f1()的返回值,也就是该匿名函数,这样做的好处是value不会被初始化,而是得以继续使用,实现了缓存数据的目的。事实上缓存数据即是闭包的优点,也是闭包的缺点。

4.沙箱

我认为沙箱不是一种技术,而是一种思想,在一个函数的作用域范围内,使用局部变量完成所需求的功能,这样外部的变量不会干涉到功能内的数据,这就是沙箱。
(function() {
        function f1() {
          var value = 1;
          return function() {
            this.innerText = "赞(" + value++ + ")";
          };
        }

        function My$(TagName) {
          return document.getElementsByTagName(TagName);
        }

        var btnObj = My$("button");

        for (var i = 0; i < btnObj.length; i++) {
          btnObj[i].onclick = f1();
        }
      }());

相关文章

  • JavaScript02(沙箱,闭包)

    2018年11月13日 先记一下三个方法 1.apply和call方法 这两个方法作用相同,都是修改this的指向...

  • Web前端------JS高级闭包、沙箱介绍

    闭包介绍 闭包小案例(一) 闭包小案例(二) 闭包小案例(三)--------模拟点赞 效果展示: 沙箱 欢迎关注...

  • JS高级-闭包、沙箱

    作用域,作用域链,预解析 变量:局部变量、全局变量 作用域:变量的使用范围 js中没有块级作用域,一对括号中定义的...

  • jQuery源码的简单理解及其引申的相关问题的解答

    1.jQuery运用了沙箱模型,使用闭包来隔离变量,制造出块级作用域,防止全局变量污染。 2.jQuery在闭包内...

  • 15-闭包/沙箱/递归

    1.闭包: 一个函数可以访问另一个函数的局部变量 作用: 把数据保护起来,把数据缓存起来 特征: 1....

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 2019-03-26 JS中的作用域,作用域链,预解析

    作用域:变量的使用范围 作用域链 预解析 闭包 沙箱: 环境,黑盒,在一个虚拟的环境中模拟真实世界,做实验,实验结...

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

  • Day7 闭包(Closures)

    本页包含内容:• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包 1、闭包表达式 闭包...

网友评论

      本文标题:JavaScript02(沙箱,闭包)

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