• 原型链和作用域链的理解


    // 什么是作用域链:
            // 作用域链是针对变量的,比如我们一个函数1里面嵌套了另一个函数2,那么此时就有了三个作用域:全局作用域--->函数1作用域--->函数2作用域
            // ,那么函数2会先在自己的作用域内查找相关变量,如果没有就会向上级作用域查找,这个查找过程就是作用域链
            // 例子1:
          
     1   var a = 100
     2         function f1(){
     3             a = 10
     4             function f2(){
     5                 a = 1
     6                 console.log(a);   
     7             }
     8             f2()
     9         }
    10         f1()
            // 例子1 最后打印出来的结果是 1 ,因为f2函数在自己的作用域内已经找到了变量a,所以不会继续向上查找

            // 那什么又是原型链呢?
            // 原型链是针对构造函数而言,当我们创建了一个函数obj,通过一个变量new出来一个新的函数f3,那么这个新函数就继承了obj函数的一些属性
            // 当我们在新函数中用到一个没有定义的变量时,它会向原函数obj中去查找这个变量
            // 例子2:
           
     1  function obj(){
     2             this.name = '陈斌',
     3             this.age = 25
     4             obj.prototype.sex = '男'
     5         }
     6         let f3 = new obj()
     7         f3.salary = 6000
     8         console.log(f3.name); 
     9         console.log(f3.sex);
    10         console.log(f3.salary);
    11         console.log(f3.c);
    12         
            // 例子2 输出结果分别是:陈斌  男  6000  undefined
            // name,age,sex 都是obj函数的属性,salary是给新函数f3添加的属性,但是当我们在f3中用到了没有定义的变量,它会自动向它的父级函数查找
            // 当父级函数也没有这个变量,就会返回一个undefined

            
  • 相关阅读:
    Java 流(Stream)、文件(File)和IO
    归并排序(Java)
    TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
    动态规划—矩阵链乘法
    SQL Server 行列转换
    dropdownlist无刷新传值
    ASP.NET在主题中添加CSS文件
    asp.net网站后台退出后,点后退按钮仍能进,如何安全退出
    下拉框数据绑定两种方式
    win7安装IIS及将网站发布到IIS上
  • 原文地址:https://www.cnblogs.com/1825224252qq/p/11775810.html
Copyright © 2020-2023  润新知