zoukankan      html  css  js  c++  java
  • 《JavaScript模式》读书笔记

    作者:zccst

    第四章:函数
    函数的两个特征:是对象;提供作用域。

    函数是对象表现如下:

    • 可以运行时动态创建,还可以在程序执行过程中创建
    • 函数可以分配给变量,可以将它们的引用复制到其他变量,可以被扩展,删除
    • 可以作为参数传给其他函数,并且还可以有其他函数返回
    • 函数可以有自己的属性和方法



    下面介绍八种函数

    一、API模式,为函数提供更好且更整洁的接口。
    1,回调模式
    也就是说,作为回调函数传递的时候
    例如obj1.method1(obj2.method2)时,method1方法的this指向obj1,但obj2.method2方法的this并不指向obj2,而是window。
    如果需要将obj2.method2的this指向某一个对象,则需要使用call或apply。具体是:

    obj1 = {
        method1:function(callback, xxObj){
            //callback(args);//如果直接运行this指向window
            callback.call(xxObj, args);//就可以了
        }
    }
    批注:this指向window的还有超时函数

    2,即时函数的返回值是另一个函数
    首先,什么是即时函数?
    (function(){
      alert("watch out!");
    }());

    (function(){
      alert("watch out!");
    })();
    (1)即时函数的传参
    (2)即时函数的返回值。返回值是一个函数的模式得到广泛应用。


    3,配置对象
    var conf = {...};
    addPerson(conf);

    4,curry函数
    把两个参数的函数拆成两部,第一个子函数接收第一个参数,再里面嵌套第二个子函数接收第二个参数。

    二、性能模式,可以帮助加速代码运行
    1,自定义函数
    很奇葩的类型
    var scareMe = function(){
      alert("Boo!");
      scareMe = function(){
        alert("Double Boo!");
      };
    };
    scareMe();//Boo!
    scareMe();//Double Boo!

    2,函数属性——备忘模式
    即使用函数的静态属性和方法来保存实例

    三、初始化模式
    1,即时函数
    2,即时对象初始化
    ({
      xx
      xx
      init:function(){}
    }).init();
    3,初始化时分支



    第五章:对象

    如果通过共有方法访问私有复合数据类型时,可能会导致私有复合数据类型被改写,所以最好不要直接传递,
    如果需要传递,则有一下几种办法:
    1,只传递复合数据类型的子属性(即基本数据类型)
    2,通过浅复制和深复制的方式。

  • 相关阅读:
    上台阶
    格子游戏
    找同乡
    约德尔测试
    hihocoder_week195奖券兑换
    hihocoder_week197逆序单词
    牛客网--数串
    hihocoder_offer收割编程练习赛55_3
    hihocoder_offer收割编程练习赛55_2
    hihocoder_offer收割编程练习赛55_1
  • 原文地址:https://www.cnblogs.com/shsgl/p/4289940.html
Copyright © 2011-2022 走看看