首页 > 其他分享 >ES6对Number数字以及Object对象类型做的升级优化

ES6对Number数字以及Object对象类型做的升级优化

时间:2022-09-21 08:22:17浏览次数:72  
标签:obj1 ES6 obj2 console log Object NaN Number

1.ES6对Number数字做的升级优化

优化部分

ES6在Number原型上新增了isFinite()、isNaN()方法,用来取代ES5中的isFinite()、isNaN()方法检测数值是否有限,是否是NaN。

//ES5
console.log(isNaN('NaN'))//true
console.log(isNaN(NaN))//true

//ES6
console.log(Number.isNaN("NaN"))//false
console.log(Number.isNaN(NaN))//true

  

升级部分

ES6在Math对象上新增了Math.cbrt()、Math.trunc()、Math.hypot()等运算方法,求立方根,求和立方根等。

console.log(Math.cbrt(27))//3 开立方

console.log(Math.trunc('27.4567890px'))//取整
console.log(Math.trunc('27.4567890'))
console.log(Math.trunc(27.4567890))
console.log(Math.trunc(0.4567890))
console.log(Math.trunc(-27.4567890))
console.log(Math.trunc(NaN))

console.log(Math.hupot(3,4))//平方和开方

2.ES6对Object对象类型升级优化(重要)

优化部分

对象属性变量式声明

ES6可以直接以变量形式声明对象属性或方法,比传统的键值对形式声明更加简洁,更方便,语义更清晰。

let[a,b]=[1,2]

let obj1={a,b}
//等同于
let obj2={
   a:a,
   b:b
}
console.log(obj1,obj2)

  对象中的方法也可以使用上述简洁写法:

//ES5
var obj1={
    fun1=function(){
           //语句
    }
}

//ES6
let obj2={
    fun2()
    //语句
    }
}

  对象的解构赋值

//ES6
let{a,b}={a:1,b:2}
//a==1,b==2

//ES5
var obj={a:1,b:2}
var a=obj.a,
  b=obj.b

  

对象的扩展运算符

ES6对象的扩展运算符跟数组扩展运算符区别不大,毕竟数组也是一种特殊的对象。对象的扩展运算符一个最好用也是最常用的方法是可以轻松的去除木匾对象内部全部或部分可遍历属性,从而进行对象的合并和分解。

const person={
	name:'小明',
	age:18,
	gender:'男',
	number:13312341234,
	hobbies:['唱','跳','rap']
}

const {name,gender,...others}=person

console.log(name,gender,others)

  

升级部分

ES6在Object原型上新增了is()方法,用来做两个对象的相等比较。而且完善了NaN!=NaN的不合理。

const obj1={
	a:1,
	b:2
}

const obj2={
	a:1,
	b:2
}

const obj3=obj2

// console.log(obj1==obj2)
// console.log(![img](file:///C:\Users\TX\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)Object.is(obj2,obj3))
// console.log(![img](file:///C:\Users\TX\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)Object.is(obj1,obj2))

console.log(NaN===NaN)
console.log(![img](file:///C:\Users\TX\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)Object.is(NaN,NaN))

  如何判断两个对象属性和属性值是否完全相同(以下非完整写法,不足以完全判断两个对象是否完全一致)?

function isobjectSame(obj1,obj2){
    //判断是否是Object
    //console.log(Object.prototype.toString.call(obj1))
    if(Object.prototype.toString.call(obj1)!=='[object Object]'
        ||lobject.prototype.toString.call(obj2)!=='[object Object]'){
        return console.Log('不是对象')
    }
    //判断二者是否原本就是同一指针
    if(obj1===obj2){
    return true
    }
    const arr1=Object.get0wnPropertyNames(obj1)//[a,b]可以获取obj1的所有键名key组成的数组
    const arr2=Object.getownPropertyNames(obj2)//[b,a]
    if(arr1.length!==arr2.length){
        return false
    }
    let count=0
    for (key of arr1){//把obj1.a===obj2.a  obj1.b===obj2.b
        count=obj1[key]===obj2[key]?count+1:NaN
    }
    if(count!==arr1.length){
       return false 
    }
    return true
}   
console.log(isObjectSame([],{}))

  

标签:obj1,ES6,obj2,console,log,Object,NaN,Number
From: https://www.cnblogs.com/songsong072/p/16714326.html

相关文章

  • java 根据任意List<Object>输出excel表格
    使用方法:将自定义的pojo类,添加到list中,直接调用输出类的out方法就可以(注意:这个pojo类的属性上必须使用自定义注解,index属性用来标识该属性放在哪一列,value则标示输出的中......
  • ES6模块之export和import详解
    ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它。ES6的模块系统大致分为导出(export)和导入(import)两个模块。1、模块导......
  • ES6的H5相关内容
    画图:canvas--签名,刮奖,画布线:坐标,粗细,颜色.lineWidth=6;//线的粗细,单位是px.strokeStyle="css颜色值";.moveTo(x,y),开始落笔位置.lineTo(x,y),结束位置.stroke();绘制线......
  • JavaScript中new Object()是什么?
    https://blog.csdn.net/GreyBearChao/article/details/78689982https://blog.csdn.net/weixin_45916711/article/details/109542980语法:newObject(value)newObject()将......
  • blog 2 Objects, state, behavior in real-world
     1.创建变量并命名它们变量对象将其状态存储在字段中。Java编程语言定义了以下类型的变量:实例变量(非静态字段)从技术上讲,对象将其各个状态存储在“非静态字段”中,......
  • LeetCode448. Find All Numbers Disappeared in an Array
    题意n个数,统计1-n中未出现的数方法遍历和标记代码classSolution{public:vector<int>findDisappearedNumbers(vector<int>&nums){sort(nums.beg......
  • Object和Map的区别?
    相同点二者都是以key-value的形式对数据进行存储;不同点1.key的数据类型范围不同Object:可以作为key的有:number,string,以及es6里面的symbol;Map:js目前存在的数据......
  • Map底层实现、Map-Object性能对比
    Map底层实现、Map-Object性能对比Map是一个键值对的集合,和Object类似。Map做为构造函数,可以通过全局对象获取到。需要通过new操作创建实例对象,直接调用会报错。M......
  • ES6-2
    <!--<script>//const声明一个只读的常量,只能读取——基本类型初始化的时候必须给值(另一种是引用类型)栈里constabc=111;//abc=222;//报......
  • ES6-1
    <!--<script>window.onload=function(){vara=10;letb=20;constc=30;//ES5预解析变量提升varfunction......