懒惰函数定义

2016-09-08  本文已影响0人  TingsLee

1.举个例子

var scareMe = function () { alert("king"); scareMe = function () { alert("double king"); } }

scareMe(); // king scareMe(); //double king

优点:函数有些初始化工作要做,并且仅需执行一次,可以使用这种模式,显著提升程序性能
缺点:当他重定义自身时已经添加到原始函数上的任何属性都会丢失;吐过函数开始分配给了另一个变量或者对象的方法,则重定义行为不会发生

2.应用

2.1 浏览器兼容性检测

function addEvent (type, element, fun) { if (element.addEventListener) { element.addEventListener(type, fun, false); } else if(element.attachEvent){ element.attachEvent('on' + type, fun); } else{ element['on' + type] = fun; } }

使用上述代码会执行重复检测,而同一个应用环境中,只需检测一次

function addEvent (type, element, fun) { if (element.addEventListener) { addEvent = function (type, element, fun) { element.addEventListener(type, fun, false); } } else if(element.attachEvent){ addEvent = function (type, element, fun) { element.attachEvent('on' + type, fun); } } else{ addEvent = function (type, element, fun) { element['on' + type] = fun; } } return addEvent(type, element, fun); }

重写上述函数,并在函数内部根据判断重定义了自身

2.2创建单例对象
unction Universe() { // 缓存的实例 var instance = this; // 其它内容 this.start_time = 0; this.bang = "Big"; // 重写构造函数 Universe = function () { return instance; }; }

3.总结

上一篇下一篇

猜你喜欢

热点阅读