Eloquant Javscript读书笔记

  • Date的比较特殊之处 ==

在日期的比较中, >, < , >=, <= 都是按照所预期的正常工作,但==确实按照对象的比较来进行。就是说

var wallFall1 = new Date(1989, 10, 9),
wallFall2 = new Date(1989, 10, 9);
show(wallFall1.getTime() == wallFall2.getTime());
结果是false.

  • Javascript的作用域

作用域只涉及到function级的,代码块中的作用域无效。 如果在代码块中,声明私有变量,则设为其所在函数级的私有变量。

  • Array.splice vs Array.slice

Splice会修改Array的内容,而slice只是从当前数组中拷贝部分内容出来。

  • Number/Boolean/String的强制类型转化

Number(xxxx),  String(xxx), Boolean(xxx)

  •  私有函数

一般而言,函数是一级公民,但常常忽略的是函数之内还可以声明函数,即私有函数。 私有函数的使用可以提高代码本身的聚合度和整洁性。

单例模式的实现

单例模式的实现有多重方式。比如全局变量,直接对象等。如果基于闭包则会更为间接优美。 其本质是在单例函数类的对象为单例,但是提供访问单例对象的途径(对象)其本身会是多个的。

var LazySingleton = function(){
    var attr = 1, fn = function(){};
    var obj = {
        method : function(){ fn(); },
        getAttr : function(){ return attr; }
    };
    function init(){
        return obj;
    }
    return {getInstace: init};
}();

实现的访问方式:

LazySingleton.getInstance().method();
LazySingleton.getInstance().getAttr();



你可能感兴趣的:(Date,工作,String,function,读书)