1,Object.is():比较两个值是否严格相等,es5的'===',不能判断+0和-0,还有NaN,但是es6的Object.is()可以区分 Object.is(+0, -0); // false Object.is(NaN, NaN); // true 2,Object.assign():将源对象所有的可枚举的属性复制到目标对象.这个非常重要! Object.assign(target, source1, source2......);第一个参数是目标对象,后面的参数都是源对象. 这是一…
一,Symbol 原始数据类型,不是对象,它是JavaScript第七种数据类型,表示独一无二的值.Symbol是通过Symbol函数生成的: let s = Symbol(); typeof s // "symbol" 不用new,因为Symbol不是对象,而是原始值.Symbol通常作为内置的值来使用,最重要的一个属性: Symbol.iterator,该属性指向该对象的默认遍历器方法,所以 obj[Symbol.iterator]会返回该对象的默认遍历器,然后可以使用遍历器一些方…
本篇全是重点,捡常用的怼,数值的扩展比较少,所以和函数放一起: 一,数值 1,Number.EPSILON:用来检测浮点数的计算,如果误差小于这个,就无误 2,Math.trunc():取整,去除小数部分,如果是-0.123,去除之后会留下-0,这个要注意 其他感觉用的都不多,就这两个. 二,函数: 1,es6引入了rest参数:...变量名,它跟arguments的区别,它是真正的数组 2,箭头函数: 函数体内的this对象就是定义时所在的对象,不是使用时所在的对象: 不可以当做构造函数,即不…
概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突.这就是 ES6 引入Symbol的原因. ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean).字…
一,let 先看代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i) }; } a[6](); // 10 我先花点时间来拆分一下这个for循环,我就写第一个循环过程,后面依次类推: {var i = 0; if (i<10) { a[i] = function(){ console.log(i) } }; i++;} // 第一个循环{ i = 1;...;i++;}// 第二个循…
ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向 Set 结构加入成员,结果表明 Set 结构不会添加重复的值. Set 函数可以接受一个数组(或…
最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments这些是ES6最常用的几个语法,基本上学会它们,我们就可以走遍天下都不怕啦!我会用最通俗易懂的语言和例子来讲解它们,保证一看就懂,一学就会. 字符串的用法 //字符串的Unicode表示法(可以在线转换unicode编码) var name='\u{8463}\u{5…
检测代码方法 function isNative(api){ return /native code/.test(api.toString())&&typeof api !== 'undefined' } 如检测浏览器是否支持Proxy, isNative(Proxy). native code是:已被编译为特定于处理器的机器码的代码.是浏览器已经支持的代码.即native code检查是不是浏览器原生支持,而不是打补丁方式支持.…
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为了在对象中对属性名滥用而导致的冲突问题. ps: 既然是数据类型,不是对象,那么就不能用new命令,因此不能添加属性 let a = Symbol('a') console.log(a) // Symbol(a) console.log(typeof a) // symbol 简单来说:一旦声明一个…
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Symbol1.symbol:Symbol是javascript的第七种原始数据类型,代表独一无二的值.前六种是Null,undefined,Boolean,String,Number,Object  生成symbol值的方式    let s1 = Symbol()    let s2 = Symbol('s2-symbol')//接受字符串作为参数来对symbol值进行描述    typeof s1…