• JAVASCRIPT闭包以及原型链


    方法内部还有个方法,实例化父方法后,再次调用父方法,可以运行父方法内部的子方法,这样的程序就叫做闭包

    DEMO如下:

         //function outerFn() {
            //    var outerVar = 0;
            //    document.write("Outer function<br/>");
            //    function innerFn() {
            //        outerVar++;
            //        document.write("Inner function	");
            //        document.write("outerVar = " + outerVar + "<br/>");
            //    }
            //    return innerFn;
            //}
            //var fnRef = outerFn();
            //fnRef();
            //fnRef();
            //var fnRef2 = outerFn();
            //fnRef2();
            //fnRef2();

    输出值如下:

    Outer function
    Inner function    outerVar = 1
    Inner function    outerVar = 2
    Outer function
    Inner function    outerVar = 1
    Inner function    outerVar = 2
    实例化的时候不会走子方法的。只有下面的调用才会走子方法。
    闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,直到程序执行完才能被CG回收,然后销毁

     例子二:

     function f1() {
                var n = 999;
                nAdd = function () { n += 1 }
                function f2() {
                    alert(n);
                }
                return f2;
            }
            var result = f1();
            result(); // 999
            nAdd();
            result(); // 1000

     关于原型链:

    在JavaScript中,一共有两种类型的值,原始值和对象值.每个对象都有一个内部属性[[prototype]],我们通常称之为原型.原型的值可以是一个对象,也可以是null.如果它的值是一个对象,则这个对象也一定有自己的原型.这样就形成了一条线性的链,我们称之为原型链.,顺着某一个类型可以找到他的最顶层,这个过程中每一个环节构成了JS的原型链,最顶级貌似是NULL,每一个对象都有一个指向他的原型的类似指针物

  • 相关阅读:
    Spring Boot集成Spring Security
    vue全局使用axios的方法
    在SpringBoot 使用Redis存储Session
    SpringBoot几种定时任务的实现方式
    mysql重置auto_increment字段
    iView中DatePicker的表单验证问题
    go语言基础(四)
    go语言基础(三)
    go语言基础(二)
    go语言基础(一)
  • 原文地址:https://www.cnblogs.com/llcdbk/p/5341833.html
Copyright © 2020-2023  润新知