Skip to content

JS高阶编程技巧之惰性思想 #65

@Yangxiaqing

Description

@Yangxiaqing

惰性思想:

能够执行一次就搞定的绝对不会执行多次。
例:

var utils = (function () {
	var flag = "getComputedStyle" in window;
	//兼容的话是标准浏览器,但是如果flag=false说明当前的浏览器的IE6~8
	
	function getCss(attr) {
		var val = null,reg = null;
		if (flag) {
			val = window.getComputedStyle(this, null)[attr];
		} else{//IE6~8
			//如果传递进来的结果是opacity,说明我想获取到的是透明度,但是在IE6~8下获取透明度需要使用filter
			if (attr === "opacity") {
				val = this.currentStyle["filter"];
				//"alpha(opacity = 10)" 把获取到的结果进行剖析,获取里面的数字,让数字乘以100才和标准的浏览器保持一致
				reg = /^alpha\(opacity=(\d+(?:\.\d+)?)\)$/;
				val = reg.test(val) ? reg.exec(val)[1]/100 : 1;
			}else{
				val = curEle.currentStyle[attr];
			}
		}
		reg = /^(-?\d+(\.\d+)?)(px|pt|rem|em)?$/i;
		return reg.test(val) ? parseFloat(val) : val;
	}

	//把外界需要使用的方法暴露给utils
	return {	
		getCss: getCss
	};
}) ();
utils.getCss();
utils.getCss();
utils.getCss();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions