资讯专栏INFORMATION COLUMN

前端开发常用的函数

YacaToy / 1903人阅读

摘要:实用的函数集合总结基本类型的判断在项目实例中,难免要做一些容错处理或者是对实例的类型判断,那么就可以把这部分的判断整理成公共的文件,供全局使用。

实用的函数集合总结 基本类型的判断

在项目实例中,难免要做一些容错处理或者是对实例的类型判断,那么就可以把这部分的判断整理成公共的js文件,供全局使用。

利用object.prototype.toString.call可以判断对象的类型

变量的两种类型值:
1、基本类型:String,Number,Boolean,undefined,null,按值访问
2、引用类型:Object,Array, 对象保存在内存中

可以作为项目的工具类,比如命名为tool.js

</>复制代码

  1. export default isNumber(value) {
  2. return Object.prototype.toString.call(value) == "[object Number]"
  3. }
  4. export default isString(value) {
  5. return Object.prototype.toString.call(value) == "[object String]"
  6. }
  7. export default isArray(value) {
  8. return Object.prototype.toString.call(value) == "[object Array]"
  9. }
  10. export default isBoolean(value) {
  11. return Object.prototype.toString.call(value) == "[object Boolean]"
  12. }
  13. export default isUndefined(value) {
  14. return value === undefined
  15. }
  16. export default isNull(value) {
  17. return value === null
  18. }
  19. export default isSymbol(value) {
  20. return Object.prototype.toString.call(value) == "[object Symbol]"
  21. }
  22. export default isObject(value) {
  23. return ( Object.prototype.toString.call(value) == "[object Object]"
  24. ||
  25. // if it isn"t a primitive value, then it is a common object
  26. (
  27. !isNumber(value) &&
  28. !isString(value) &&
  29. !isBoolean(value) &&
  30. !isArray(value) &&
  31. !isNull(value) &&
  32. !isFunction(value) &&
  33. !isUndefined(value) &&
  34. !isSymbol(value)
  35. )
  36. )
  37. }
  38. //是否是一个空对象
  39. export function isEmptyObject(obj) {
  40. if(!isObject(obj)) {
  41. return false
  42. }
  43. if(var key in obj) {
  44. return false
  45. }
  46. return true
  47. }
  48. //是否是一个空数组
  49. export function isEmptyArray(array) {
  50. if(!isArray(array)) {
  51. return false
  52. }
  53. return array.length > 0 ? false : true
  54. }
  55. export function isFunction(value) {
  56. return Object.prototype.toString.call(value) == "[object Function]";
  57. }
引用类型克隆合并

Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果拷贝后的结果是两个对象指向同一引用地址,修改其中一个对象的属性,则另一个对象的属性也会改变
所以改变引用类型值时会影响到拷贝的值

</>复制代码

  1. var obj1 = {a: {b: 1}};
  2. var obj2 = Object.assign({}, obj1);
  3. obj1.a.b = 2;
  4. obj2.a.b // 2

下面extend函数就是解决上面的问题

</>复制代码

  1. /*
  2. 深度合并内容
  3. 引用类型克隆合并
  4. arguments[0] = target
  5. arguments type is Object Or Array
  6. 多内容合并覆盖优先级: arguments[0]
  7. 此时引用类型克隆出来的对象就是完全独立的对象了,源对象修改属性不会影响到克隆的对象

  8. </>复制代码

    1. var obj1 = {a: {b: 1}};
    2. var obj2 = extend({}, obj1)
    3. obj1.a.b = 2;
    4. obj2.a.b // 1
  9. 可以合并 对象与对象,数组与数组,对象与数组等

  10. 不同时间形式的输出
  11. 时间戳是一样的,有时需要根据需求输出不一样格式的时间形式

  12. yyyyMMddhh:mm:ss

  13. yyyy年MM月dd日

  14. yyyy-mm-dd

  15. </>复制代码

    1. /*@param date 时间戳*/
    2. /*@param format 时间格式*/
    3. function dateFormat(date,format){
    4. if(!format || typeof format !== "string"){
    5. console.error("format is undefiend or type is Error");
    6. return "";
    7. }
    8. date = date instanceof Date? date : (typeof date === "number"|| typeof date === "string")? new Date(date): new Date();
    9. //解析
    10. var formatReg = {
    11. "y+": date.getFullYear(),
    12. "M+": date.getMonth()+1,
    13. "d+": date.getDate(),
    14. "h+": date.getHours(),
    15. "m+": date.getMinutes(),
    16. "s+": date.getSeconds()
    17. }
    18. for(var reg in formatReg){
    19. if(new RegExp(reg).test(format)){
    20. var match = RegExp.lastMatch;
    21. format = format.replace(match, formatReg[reg]< 10 ? "0"+formatReg[reg]: formatReg[reg].toString() );
    22. }
    23. }
    24. return format;
    25. }
  16. 这样,把你想要的时间的格式和时间戳传入即可。

  17. </>复制代码

    1. dateFormat(new Date().getTime(),"yyyy-MM-dd hh:mm:ss")
    2. dateFormat(new Date().getTime(),"MM-dd-yy hh:mm:ss")
    3. ...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99396.html

相关文章

  • 前端基础入门五(掌握jQuery常用api,实现动态效果)

    摘要:基本概念学习目标学会如何使用,掌握的常用,能够使用实现常见的效果。想要实现简单的动画效果,也很麻烦代码冗余。实现动画非常简单,而且功能更加的强大。注意选择器返回的是对象。 jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常见的效果。 为什么要学习jQuery? 【01-让div显示与设置内容.html】 使用javasc...

    nevermind 评论0 收藏0
  • 前端基础入门五(掌握jQuery常用api,实现动态效果)

    摘要:基本概念学习目标学会如何使用,掌握的常用,能够使用实现常见的效果。想要实现简单的动画效果,也很麻烦代码冗余。实现动画非常简单,而且功能更加的强大。注意选择器返回的是对象。 jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常见的效果。 为什么要学习jQuery? 【01-让div显示与设置内容.html】 使用javasc...

    codecook 评论0 收藏0
  • 前端基础入门五(掌握jQuery常用api,实现动态效果)

    摘要:基本概念学习目标学会如何使用,掌握的常用,能够使用实现常见的效果。想要实现简单的动画效果,也很麻烦代码冗余。实现动画非常简单,而且功能更加的强大。注意选择器返回的是对象。 jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常见的效果。 为什么要学习jQuery? 【01-让div显示与设置内容.html】 使用javasc...

    WalkerXu 评论0 收藏0
  • 前端基础入门五(掌握jQuery常用api,实现动态效果)

    摘要:基本概念学习目标学会如何使用,掌握的常用,能够使用实现常见的效果。想要实现简单的动画效果,也很麻烦代码冗余。实现动画非常简单,而且功能更加的强大。注意选择器返回的是对象。 jQuery基本概念 学习目标:学会如何使用jQuery,掌握jQuery的常用api,能够使用jQuery实现常见的效果。 为什么要学习jQuery? 【01-让div显示与设置内容.html】 使用javasc...

    widuu 评论0 收藏0
  • JavasScript重难点知识

    摘要:忍者级别的函数操作对于什么是匿名函数,这里就不做过多介绍了。我们需要知道的是,对于而言,匿名函数是一个很重要且具有逻辑性的特性。通常,匿名函数的使用情况是创建一个供以后使用的函数。 JS 中的递归 递归, 递归基础, 斐波那契数列, 使用递归方式深拷贝, 自定义事件添加 这一次,彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果...

    forsigner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<