• 04学习 JS 作用域 继承 闭包




    ---------------------------------------

    function Fa(){};
    Fa.prototype.name = 'fa';//一级
    function Fb(){};
    
    Fb.prototype = new Fa();//继承 二级
    Fb.prototype.name = 'fb';
    
    function Fc(){};
    Fc.prototype.name = 'fc';
    Fc.prototype = new Fb();//继承 三级
    
    var aa = new Fc();
    aa;

    aa.__proto__.name = "shaozhu" //修改


    aa.__proto___.name = 'cc' //修改

    //这个时候 修改是是Fc 里面的

    //修改 如果 自己没有 那么就会往上级去寻找 然后修改。

    ---------------------------------------
    第一个参数是 作用域

    //call(this,name,age) apply(this.[]) 在一个对象中调用另一个对象

    function ParentType(name,age){//构造函数
    this.name = name;
    this.age = age;
    }
    
    ParentType.prototype.getParentname = function(){
    return this.name;
    }
    
    function sonType(){
    ParentType.call(this,"xxx",222);//子类调用父类 并且传参
    //ParentType.apply()
    this.name = 'tt';
    }
    
    sonType.prototype = new ParentType();//继承
    
    sonType.prototype.getsonName = function(){
    return this.name;
    }
    
    var aa = new sonType();
    
    
    //aa.name tt 先从他本身开始找
    
    //aa.age 222 本身没有 然后再从上面开始找

    //理解起来 可以这设想 把一只小白鼠 包裹在一个小盒子里面

    然后小盒子包裹中盒子,中盒子包裹大盒子,小白鼠要找吃的,

    是先出来小盒子找,没有找到,再去中盒子找,如果没有找到再去

    大盒子找,找到了就不会再往外面找了。

    ---------------------------------------

    作用域

    闭包

    递归



    ---------------------------------------------


    作用域 (这个是重点)

    当前变量的作用的区域 活动的一个范围区域


    全局作用域 局部作用域


    作用域以函数为单位

    函数里面的 可以用外面的变量 外面不可以用函数里面的变量。

    ---------------------------------------------

    闭包

    var x = 's';
    
    function aa(){
    var x = 's1';
    function son(){
    var x = 's2';//这里面也可以 用外面的x
    return x;
    };
    };

    ---------------------------------------------

    闭包 (函数 读取其它函数内部的变量)

    function aa(){
    var x='s1';
    function son(){
    var x='s2';
    return x;
    }
    return son();//有括号 执行
    
    }
    aa();
    
    //"s2"
    
    //闭包 就是函数的内容 和函数的内部 连接起来的一个桥梁

    -------------------------

    function aa(){
    var x='s1';
    function son(){
    var x='s2';
    return x;
    }
    return son;//没有括号
    
    }
    aa();

    返回方法体 返回的是函数体

    son(){
    var x='s2';
    return x;
    }

    -------------------------
    闭包

    function checkSope(){
    var scope = 'son';
    return function sonSvope(){
    var scope = "son1";
    return scope
    }
    }
    checkSope();


    返回整个函数
    ------------------

    function checkSope(){
    var scope = 'son';
    return function sonSvope(){
    var scope = "son1";
    return scope
    }
    }
    checkSope()();//两个括号 实际不这样用
    
    "son1"

    -------------------------

    自调

    var fun =(
    function checkSope(){
    var scope = 'son';
    return function sonSvope(){
    var scope = "son1";
    return scope
    }
    }()//这种用的比较多
    )
    
    fun();


    结果:son1

    -------------------------

    闭包 例子:

    function setup(x){//传的是数组
    
    var i =0;
    return function(){
    return x[i++];
    }
    }
    
    var next = setup(['a','b','c'])
    
    //第一次
    next();
    
    "a"
    
    //第二次
    next();
    
    "b"
    
    //第三次
    next();
    
    "c"
    
     


    -------------------------

    也可以这样写

    var fun = (function setup(x){//传的是数组
    
    
    var i =0;
    
    return function(){
    return x[i++];
    
    }
    }(['a','b','c']));
    
    fun();

    -------------------------

    闭包自调的方式

    传参

    var fun(
    func


    )


    ---------------------------------------------------------------------------


    递归:自己调用自己

    function fact(num){
    if(num<=1){
    return 1;
    }else{
    return num*fact(num-1);
    }
    }
    fact(4)
    
    //24
    
    //4*3*2*1


    ----------------------------

  • 相关阅读:
    Python MySQL
    selenium-java,暂停功能
    selenium-java,selenium安装配置
    selenium-java,selenium版本和火狐浏览器版本对应关系
    Jmeter-配置元件
    java-读写文件
    Jmeter-线程组执行顺序控制
    Jmeter-Interleave Controller(交替控制器)
    Jmeter-Transaction Controller(事务控制器)
    Jmeter-Logic Controllers(逻辑控制器)
  • 原文地址:https://www.cnblogs.com/shaozhu520/p/8544679.html
Copyright © 2020-2023  润新知