/*
// 每一次执行getCss方法,都需要验证当前浏览器是否兼容getComputedStyle
function getCss(element, attr) {
if (typeof getComputedStyle !== 'undefined') {
return getComputedStyle(element)[attr];
}
return element.currentStyle[attr];
}
*/
// 第一次执行会产生闭包
function getCss(element, attr) {
// 第一次执行函数:我们根据兼容性,把函数进行重构;第二次及以后再执行,只需要执行重构后的小函数即可,小函数中把只需要第一次才做的校验去掉了...
if (typeof getComputedStyle !== 'undefined') {
getCss = function (element, attr) {
return getComputedStyle(element)[attr];
};
} else {
getCss = function (element, attr) {
return element.currentStyle[attr];
};
}
// 保证第一次执行也可以获取结果:把重构的函数执行一次
return getCss(element, attr);
}
var body = document.body;
console.log(getCss(body, 'width'));
console.log(getCss(body, 'margin'));
封装函数的惰性思想(闭包的实际应用场景之一(函数重构),减少重复条件判断)
最新推荐文章于 2024-06-28 14:17:45 发布