上午發表了一個總結以爲仍是把本身的瞭解作成一個小系列吧,明天把那個總結一下!javascript
es6對我們es3,es5的數據類型進行了升級下邊說新APIs!
js數據類型有Number、String 、oject、Boolean、Null、Undefined六種數據類型 !java
下邊介紹 Math、Number、String 、Array、Boject的新 APIses6
Math數組
Numberes5
Stringcode
Array對象
Boject繼承
下邊咱們介紹三個以爲你們能用的着的屬性Math.trunc()、Math.sqrt()、Math.sign()ip
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*/
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
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用來複制字符串
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傳兩個值後邊那個規定從一位開始所有替換*/
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屬性名!