Javascript语法糖

前端之家收集整理的这篇文章主要介绍了Javascript语法糖前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

title: Javascript语法糖

date: 2015-12-24 19:18:13

tags: [javascript]


1.Array.prototype.slice

数组的slice()方法通常用来从一个数组中抽取片断。但很多开发者不了解的是,这个方法还可以用来将“类数组”元素(比如 arguments、参数列表、节点列表和属性列表)转换成真正的数组:(译注:DOM 元素的属性列表通过 attributes属性获取),Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组.

var a={length:2};
Array.prototype.slice.call(a);// [undefined,undefined]

var argsArr = Array.prototype.slice.call(arguments);

2.使用push来合并数组

我们知道当我们想要合并两个数组时一般使用Array的concat()方法来试试,concat方法能够将两个及两个以上的数组合并成一个数组,同时我们也可以使用Array prototype 的push方法来实现两个数组的合并.

var b = ['hulk']

Array.prototype.push.apply(a,b)

console.log(a) // ['hank','mark','hulk']

3.Js数据去掉小数点后边的0

在一起,我一般是使用正则表达式来替换,先判断小数点后面有无0和0的位置,然后在使用正则来替换这些0。今天突然发现一个很神奇的方法: parseFloat()

是不是特别简单?

4.JS浮点数运算精度

在Javascript中两个浮点数进行运算是得到的结果可能不是我们想要的结果,比如:

c = a + b // 0.30000000000000004,不是我们想要的0.3

主要是因为计算机是二进制浮点运算,而我们输入的是十进制浮点数,十进制数转化为二进制运算过后再转化回来,在转化过程中可能会有损失.

解决办法,先装换成整数,运算过后,再装换回来:

5. Is object empty?

Check an object is empty or not?

Jquery has a function to check the object: jQuery.isEmptyObject

It's easy and cross-browser function.

return true; // empty
}

6. 驼峰式和连字符式的转换

1) 驼峰转连字符

2) 连字符转驼峰

7. 按制定个数分割字符串

count = count || 2;

splitRegStr = '.{' + count + '}';
splitReg = new RegExp(splitRegStr,'g');

array = string.match(splitReg) || [];
if (array.join('').length !== string.length) {
array.push(string.substring(array.join('').length));
}
return array
}

8. 获得Html元素的某个Style属性

使用element.style[key]只能获取到定义在元素上的style属性,可以使用document.defaultView.getComputedStyle(window.getComputedStyle)方法获取css中的style属性值,但在IE浏览器中没有document.defaultView.getComputedStyle方法,需要使用currentStyle属性值来代替该方法.

if (elem.currentStyle && elem.currentStyle[styleKey]) {
return elem.currentStyle[styleKey];
}

if (document.defaultView && document.defaultView.getComputedStyle) {
styleKey = styleKey.replace(/([A-Z])/g,'-$1').toLowerCase();
return document.defaultView.getComputedStyle(elem,null).getPropertyValue(styleKey);
}

return null;
}

9. 常用的正则

下面列出了开发中常用的正则表达式

10. 判断对象是否为数组

11. 字符串前缀补0

function leadingZeroes(value,length) {
var str = value.toString();
var finalLen = arguments.length === 2 ? length : 0;

if (str.length > finalLen) {
    return str;
}

var prefix = new Array(finalLen - str.length + 1).join('0');
return prefix + str;

}

12. ES6函数防抖(debounce)

return function () {
content = this;
args = arguments;

const debounceHandler = function (resolve) {
  const later = () => {
    const late = new Date().valueOf() - timestamp;
    if (late < wait &amp;&amp; late >= 0) {
      timeout = setTimeout(later,wait - late);
    } else {
      timeout = null;
      if (!immediate) {
        resolve(func.apply(content,args));
        content = args = null;
      }
    }
  };

  timestamp = new Date().valueOf();
  const isCallNow = immediate &amp;&amp; !timeout;
  if (!timeout) {
    timeout = setTimeout(later,wait);
  }

  if (isCallNow) {
    resolve(func.apply(content,args));
    content = args = null;
  }
};

return new Promise(debounceHandler);

};
}

猜你在找的JavaScript相关文章