js工具方法

2020-08-20  本文已影响0人  3e2235c61b99

js彻底冻结一个对象

除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};

js深拷贝一个对象

function deepClone(source) {
  if (!source && typeof source !== 'object') {
    throw new Error('error arguments', 'deepClone')
  }
  const targetObj = Array === source.constructor ? [] : {}
  Object.keys(source).forEach(keys => {
    if (source[keys] && typeof source[keys] === 'object') {
      targetObj[keys] = deepClone(source[keys])
    } else {
      targetObj[keys] = source[keys]
    }
  })
  return targetObj
}

个人感觉用下面这个方法也可以:

let targetObj = JSON.parse(JSON.stringify(obj))

js String和Number转换

stirng转number主要有三种方法:

let str = "111"
let num1 = parseInt(str)    //把字符串转换为整数
let num2 = parseFloat(str)    //把字符串转换为浮点数
let num3 = Number(str)    //把给定的值转换成数字(可以是整数或浮点数)
//类似的方法还有:
Boolean(value)    //把给定的值转换成Boolean型;
String(value)    //把给定的值转换成字符串。
//利用js变量弱类型转换
let num4 = str - 0
let num5 = str * 1

number转string

10..toString()    //"10"  双点解析
(10).toString()    //"10"  括号先计算再转换
10 + ''  //"10"  加空串

//或者
let num = 10
num.toString()  //"10"

js判断数据类型

Object.prototype.toString.call()返回的数据格式为 [object Object]类型,然后用slice截取第8位到倒一位,得到结果为 Object

Object.prototype.toString.call({}).slice(8,-1)            //"Object"
Object.prototype.toString.call([]).slice(8,-1)             //"Array"
Object.prototype.toString.call(true).slice(8,-1)          //"Boolean"
Object.prototype.toString.call(1).slice(8,-1)         //"Number"
Object.prototype.toString.call(NaN).slice(8,-1)         //"Number"
Object.prototype.toString.call().slice(8,-1)         //"Undefined"
Object.prototype.toString.call(undefined).slice(8,-1)         //"Undefined"
Object.prototype.toString.call(null).slice(8,-1)         //"Null"
Object.prototype.toString.call(function() {}).slice(8,-1)         //"Function"
Object.prototype.toString.call(new RegExp()).slice(8,-1)         //"RegExp"
上一篇 下一篇

猜你喜欢

热点阅读