《JavaScript设计模式与开发实践》读书笔记1

第1章 面向对象的JS

  • 静态类型语言:编译时确定变量的类型

  • 动态类型语言:程序运行时,变量被赋值后,才确定变量类型。(JS)

  • 利用鸭子类型思想,可以面向接口编程,而不是面向实现编程

  • 多态:静态类型语言中实现多态,需要先向上转型,但在JS中与生俱来多态,只要有该方法即可执行

  • 封装:使用变量作用域封装特性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var myObject=(function(){
    var _name='xyy';
    return {
    getName:function(){
    return _name;
    }
    }
    })();
    console.log(myObject._name); //undefined
    console.log(myObject.getName()); //xyy
  • 原型模式是一种设计模式,也是一种编程泛型

第2章 this、call、apply

  • 在使用new构造器时,如果构造器显式地返回了一个object类型的对象,就会返回这个对象。不显示返回任何数据,或者显式返回非对象数据,则不会。

  • 1
    2
    3
    4
    5
    6
    7
    // 想用一个短函数代替document.getElementById,但是this会指向window,所以可以如下这么写
    var getId = document.getElementById;
    document.getElementById = (function(func) {
    return function() {
    return func.apply(docuemnt, arguments);
    };
    })(document.getElementById);