JavaScript-编程技巧-惰性载入函数

var testFunc = function(){
	if(typeof XMLHttpRequest != 'undefined'){
		testFunc = function(){
			alert('1');
		}
	} else if(typeof ActiveXobject != 'undefined') {
		testFunc = function(){
			alert('2');
		}
	} else {
		testFunc = function(){
			alert('3');
		}
	}
}

此函数在每次调用的时候都会执行判断,我们希望这个判断只执行一次,有两种方式可以实现。

第一种是在函数被调用时候处理,代码如下:

var testFunc = function(){
	if(typeof XMLHttpRequest != 'undefined'){
		testFunc = function(){
			alert('1');
		}
	} else if(typeof ActiveXobject != 'undefined') {
		testFunc = function(){
			alert('2');
		}
	} else {
		testFunc = function(){
			alert('3');
		}
	}
}

第二种是在函数在第一次被加载的时候处理,代码如下:

var testFunc = (function(){
	if(typeof XMLHttpRequest != 'undefined'){
		return function(){
			alert('1');
		}
	} else if(typeof ActiveXobject != 'undefined') {
		return function(){
			alert('2');
		}
	} else {
		return function(){
			alert('3');
		}
	}
});

两种方法均可。

时间: 2024-10-16 21:54:46

JavaScript-编程技巧-惰性载入函数的相关文章

javascript中惰性载入函数

我们都知道如果创建一个xhr对象(不会写,不怕,有百度,嘿嘿) function createXHR(){ if (typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined"){ if (typeof arguments.callee.activeXString != "string&qu

惰性载入函数

惰性载入函数由来 惰性载入函数的概念,最早见于<javascript高级程序设计>这本书:去年某个时候,自己偶然翻到了这一章:忽然感觉挺有道理的.最近呢,老是接触ajax这东东,我们知道浏览器之间行为的差异造成我们使用ajax,特别是创建XHR对象时,使用了大量的if判断,来做兼容性的处理.所以再次细细咀嚼了一下,写一篇博客分享再次强化. 常见的创建XHR对象的方式,类似如下代码: //创建XHR对象 function createXHR() { if (typeof XMLHttpReque

JS高阶编程技巧--惰性函数

在vue.react等框架大量应用之前,我们需要使用jQuery或者原生js来操作dom写代码,在用原生js进行事件绑定时,我们可以应用DOM2级绑定事件的方法,即:元素.addEventListener(),因为兼容性,还有: 元素.attachEvent().所以我们需要封装成一个方法: function emit(element, type, func) { if (element.addEventListener) { element.addEventListener(type, fun

javascript 编程技巧

1.巧用判断: 在js中,NaN,undefined,Null,0,"" 在转换为bool的时候,是false,所以,可以这样写. if(!obj) {} 表示一个对象如果为false的时候所做的事情,因为如果obj为以上任何一个,那么就是false,!false即是true,这样,就不需要 if(obj==null || obj == NaN ....). 2.巧用运算符: 有一个很经典的技巧,得到时间戳. var dataspan = new Date()*1; 我们知道,js是弱

JS高阶编程技巧--柯理化函数

首先看一段代码: let obj = { x: 100 }; function fn(y) { this.x += y; console.log(this); } 现在有一个需求:在1秒后,执行函数fn,并让其this指向obj. 如果写成 setTimeout(fn, 1000); 这么写的话,fn函数中的this是指向window的,而且也没有传递参数. 如果写成 setTimeout(fn(200), 1000); 这么写的话,this指向依然是window,而且相当于立即执行fn函数,并

读javascript高级程序设计16-几条函数小技巧

内容概要 作用域安全的构造函数 惰性载入函数 函数绑定 函数节流 一.作用域安全的构造函数 我们知道,当使用new操作符调用构造函数时,构造函数内部的this会指向新创建对象的实例. function Person(name){ this.name=name; } var p=new Person('peter'); console.log(p.name);//结果:perter 但是,如果没有使用new操作符,而是将构造函数当作普通函数调用时,this会指向window对象. var p1=P

回溯法编程技巧

1. 什么是回溯法 引用一下维基百科对回溯法的介绍: 回溯法(英语:backtracking)是暴力搜索法中的一种. 对于某些计算问题而言,回溯法是一种可以找出所有(或一部分)解的一般性算法,尤其适用于约束满足问题(在解决约束满足问题时,我们逐步构造更多的候选解,并且在确定某一部分候选解不可能补全成正确解之后放弃继续搜索这个部分候选解本身及其可以拓展出的子候选解,转而测试其他的部分候选解). 在经典的教科书中,八皇后问题展示了回溯法的用例.(八皇后问题是在标准国际象棋棋盘中寻找八个皇后的所有分布

15个提高编程技巧的JavaScript工具

原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScript的应用程序,特别适合AJAX和其他一些以Web为中心的技术.JavaScript主要用于编写嵌入或者包含在HTML页面的函数,从而实现DOM之间的交互. 这篇文章收集了15个可用于提高编程技巧的JavaScript工具,助你轻松快速完成工作.下面的这些JavaScript工具能让你管理Javas

【VC编程技巧】窗体?3.6以渐变效果载入对话框

平时我们经常可以看到很多应用程序启动过程很酷,什么百叶窗,渐变,各种效果,今天我们看一下如何在程序中增加这种效果. 一.示例展示: 二.示例思路: 1.首先介绍两个知识,一个是函数MoveWindow(),一个是定时器.  函数MoveWindow():改变指定窗口的位置和大小.对顶窗口来说,位置和大小取决于屏幕的左上角;对子窗口来    说,位置和大小取决于父窗口客户区的左上角.函数原形如下: BOOL MoveWindow( HWND hWnd, int X, int Y, int nWi