美文网首页
js闭包与封闭函数与其他知识点

js闭包与封闭函数与其他知识点

作者: 苗_a | 来源:发表于2018-12-04 19:47 被阅读9次

    闭包函数

    1.封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数
    2.(function(){...})();还可以在函数定义前加上"~"或者"!"符号来定义匿名函数
    (function(){
    var str = '欢迎访问我的主页';
    alert(str);
    a++;
    })();
    !function(){
    var str = '欢迎访问我的主页';
    alert(str);
    a++;
    }();
    ~function(){
    var str = '欢迎访问我的主页';
    alert(str);
    a++;
    }()

    闭包

    函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回
    function aaa(a){
    var b = 5;
    function bbb(){
    a++;
    b++;
    alert(a);
    alert(b);
    }
    return bbb;
    }
    var ccc = aaa(2);
    ccc();
    ccc();

    改写成封闭函数的形式

    var ccc = (function(a){
    var b = 5;
    function bbb(){
    a++;
    b++;
    alert(a);
    alert(b);
    }
    return bbb;
    })(2);
    ccc();
    ccc();

    获取地址栏参数

    <html>
    <head>
    </head>
    <body>
    <script type="text/javascript">
    alert(GetQueryString("id"));
    function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]); return null;}
    </script>
    </body>
    </html>

    函数的继承

    非常纯粹的继承关系,实例是子类的实例,也是父类的实例
    父类新增原型方法/原型属性,子类都能访问到
    / 定义一个动物类
    function Animal (name) {
    // 属性
    this.name = name || 'Animal';
    // 实例方法
    this.sleep = function(){
    console.log(this.name + '正在睡觉!');
    }
    }
    // 原型方法
    Animal.prototype.eat = function(food) {
    console.log(this.name + '正在吃:' + food);
    };

    call和Apple

    call的方法
    call([thisObj[,arg1[, arg2[, [,.argN]]]]])
    调用一个对象的一个方法,以另一个对象替换当前对象
    call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象
    Apple方法
    apply([thisObj[,argArray]])
    应用某一对象的一个方法,用另一个对象替换当前对象

    实现继承

    function Animal(name){
      this.name = name;
      this.showName=function(){
        alert(this.name);
      }
    }
    functionCat(name){
      Animal.call(this,name);
    }
    varcat=newCat("BlackCat");
    cat.showName();

    多重继承

    function Class10()
    {
    this.showSub = function(a,b)
    {
    alert(a-b);
    }
    }
    function Class11()
    {
    this.showAdd = function(a,b)
    {
    alert(a+b);
    }
    }
    function Class2()
    {
    Class10.call(this);
    Class11.call(this);
    }

    新选择器

    querySelector:根据选择器规则返回第一个符合要求的元素
    querySelectorAll:根据选择器规则返回所有符合要求的元素

    相关文章

      网友评论

          本文标题:js闭包与封闭函数与其他知识点

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