es6知识总结--3

es6对咱们es3,es5的数据类型进行了升级下边说新APIs!

js数据类型有Number、String 、oject、Boolean、Null、Undefined六种数据类型 !

下边介绍 Math、Number、String 、Array、Boject的新 APIs

  • Math
  • Number
  • String
  • Array
  • Boject

Math

下边我们介绍三个觉得大家能用的着的属性Math.trunc()、Math.sqrt()、Math.sign()

let a=Math.trunc(4.1);                        //trunc去除整数的小数点部分
console.log(a)//4
let b=Math.sign(-4); //sign方法用于判断一个数为正、负、0
let c=Math.sign(4.1);
let d=Math.sign(0);
console.log(b);//-1
console.log(c);//1
console.log(d);//0
let e=Math.sqrt(4) //sqrt 用于开一个数的平方根
console.log(e)//2
let f=Math.cbrt(27);
console.log(f); //3*/

Number

console.log(Number.isInteger(12));   //true  //isInteger判断数组是否为整数
console.log(Number.isInteger(12.3)); //flase
console.log(Number.isNaN(12145)) //false //isNaN用于检查数组是否为NaN
console.log(Number.isNaN(NaN)) // true

String

var str="javascript";
console.log(str.includes("java"));//true //includes()用来检查字符串是否有该连接字符
console.log(str.includes("javt"));//false
console.log(str.startsWith("ja"));//true //startsWith用来检查字符串以什么开头
console.log(str.endsWith("pt"));//true //endsWith以什么结尾
console.log("1".repeat(20))//20 个 1 //repeat用来复制字符串

Array

let arr=[1,2,3,4,5];
let arr1=Array.from(arr); //Array.from() 用来拷贝一份
arr1=[2,2,3,4,55];
console.log(arr)
console.log(arr1);//[2,2,3,4,55] console.log(Array.of(1,2,3)) //Array.of用于创建一个数组
let shuzu=[1,2,3,4,5,6]
console.log(shuzu.fill(4,1)) //fill传两个值后边那个规定从一位开始全部替换*/

object

let obj={x:1,y:1};
let obj1={};
Object.assign(obj1,obj) //Object.assign
obj1.x=2; /*1.合并多个对象;2.克隆对象;3.为数组添加多个方法*/
console.log(obj1)
let obj2={a:2,b:"c"};
//let obj1= Object.assign({},obj2,obj);
// console.log(obj1)//Object {a: 2, b: "c", x: 1, y: 1}
let obj3={aa:1,bb:2}
Object.assign(obj3,{
sayhello:()=>{},
sayhi:()=>{}
})
let person={
name:"huahua",
sex:"nan",
age:18
}
let tao={
// __proto__:person,
xh:123
}
// console.log(tao)
Object.setPrototypeOf(tao,person) //setPrototypeOf用于设置继承属性
console.log(tao.name)

同样es6新规定了一个Symbol新属性

ES5对象属性名都是字符串容易造成属性名的冲突。

var a = { name: 'lucy'};

a.name = 'lili';
这样就会重写属性

说的明白点其实Symbol就是为了处理这件事情,它表示独一无二的值

Symbol值不能与其他类型的值进行运算


// 没有参数的情况
var s1 = Symbol();
var s2 = Symbol(); console.log(s1 === s2) // false // 有参数的情况
var s1 = Symbol("foo");
var s2 = Symbol("foo"); console.log(s1 === s2) // false

Symbol值作为对象属性名时,不能用点运算符

        var mySymbol = Symbol();

        // 第一种写法
var a = {};
a[mySymbol] = 'Hello!'; // 第二种写法
var a = {
[mySymbol]: 'Hello!'
}; // 第三种写法
var a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
// 以上写法都得到同样结果
console.log(a[mySymbol]) // "Hello!"

防止对象的属性被串改

let chenxu={
name:"chenxu",
age:"17"
}
chenxu.name="晨旭"
console.log(chenxu);//被修改*/
let chenxu1={
[Symbol('name')]:"chenxu",
age:"17"
}
chenxu1[Symbol('name')]="晨旭";
console.log(chenxu1.name);//undefind
console.log(chenxu1) //Object {age: "17", Symbol(name): "chenxu", Symbol(name): "晨旭"}

但是这里的Symbol在类外部也是可以访问的,只是不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回。但有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有Symbol属性名

es6知识总结--3的更多相关文章

  1. 前端项目中常用es6知识总结 -- 箭头函数及this指向、尾调用优化

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...

  2. ES6知识整理(4)--数组的扩展

    最近工作比较忙,基本每天都会加班到很晚.处理一些客户端兼容问题以及提升用户体验的优化.也将近一周没更文了,现在继续es6的学习总结. 上篇回顾 ES6知识整理(三)--函数的扩展 扩展运算符 形式是3 ...

  3. 前端项目中常用es6知识总结 -- Async、Await让异步美如画

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...

  4. 前端项目中常用es6知识总结 -- Promise逃脱回调地狱

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const 2. ...

  5. 前端项目中常用es6知识总结 -- let、const及数据类型延伸

    项目开发中一些常用的es6知识,主要是为以后分享小程序开发.node+koa项目开发以及vueSSR(vue服务端渲染)做个前置铺垫. 项目开发常用es6介绍 1.块级作用域 let const  2 ...

  6. ES6知识整理(1)--let和const命令

    最近准备在业余空闲时间里一边学习ES6,一边整理相关知识.只有整理过的学习才是有效的学习.也就是学习之后要使用和整理成文,才是正在的学到了... 那么现在开始 LINK START!(首先是第一讲,前 ...

  7. 开发中常用的es6知识

    结合实际开发,开发中常用的es6的知识: 1.新增let和const命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效: cons ...

  8. ES6知识整理(10)--class的继承

    (这是es6的第10篇文章.说真的这样的总结之后虽然直观了许多,但是消耗的时间有点长,或许是知识比较复杂的原因吧) 类的继承 有个A类,B类继承A类,那B类实例就可以使用A类实例的所以属性和方法.不包 ...

  9. ES6知识整理(5)--对象的扩展

    个人开这个公众号的初心是为了积累知识,因此并没有做什么推广,再说自己也不知道怎么推广,推广之后又能干些什么.已经将近10天没发文章了,虽然每天都加班,但也不会一点时间都没有,有时还是会懒癌发作不想学习 ...

随机推荐

  1. Libevent源码分析—event_set()

    初始化完event_base后,下面要初始化event,通过调用event_set()实现 .相关源码位于event.c event_set() void event_set(struct event ...

  2. 网络编程应用:基于TCP协议【实现对象传输】--练习

    要求: 基于TCP协议实现,客服端向服务器发送一个对象 服务器接受并显示用户信息 ,同时返回给客户端 "数据已收到" 建一个Student类,属性:name age Student ...

  3. vue2入坑随记(二) -- 自定义动态组件

    学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.e ...

  4. 推荐xamlspy

    xamlspy(http://xamlspy.com/) 如果在win32时代用过spy++的,都应该在silverlight/wpf时代用一下xamlspy,让你重新找到用spy++看别人程序的UI ...

  5. CentOS7安装使用Docker

    安装 Docker 官方为了简化安装流程,提供了一套安装脚本,CentOS 系统上可以使用这套脚本安装: curl -sSL https://get.docker.com/ | sh 执行这个命令后, ...

  6. Grunt压缩HTML和CSS

    我的小伙伴们!我明明 在压缩图片之前发过一篇,关于Grunt压缩cCSS是和HTML的!但是不知道为什么,今天再一看.迷之消失了! 没办法.只好今天在写一次,从头开始!首先.我来介绍一下为什么要用构建 ...

  7. 关于angular-route后获取路由标签的一些问题

    要实现angular路由,我们需要用到angular.js和angular-route.js 在接入网络的情况下,很多网站都可以下载到这个文件. 然后呢,将文件引入到你的HTML中,然后是基础格式 h ...

  8. PHP代理访问网络资源

    第一种:使用DOMDocument  <? PHP $doc = new \DOMDocument(); $opts = array(     'http' => array(       ...

  9. 日常踩坑 searter

    目录 es7中的async, await Django生成二维码并转为base64 Django配置404页面 很傻逼的坑 no module named pil 其他 es7中的async, awa ...

  10. Swift json字典转模型 项目记录

    背景 最近项目开始转用Swift3开发,由于Swift中json(字典)转模型的选择方案较多,笔者最开始选择了HandyJSON的方案,在使用一段时间后发现当要进行某个字段取值使用时需要进行各种的转化 ...