1.反引號(`)標識
模板字串(template string)是增強版的字串,用反引號(`)標識,它可以當作普通字串使用,也可以用來定義多行字串,或者在字串中嵌入變數
var name = "bob", time = "today";`hello $, how are you $?` // hello bob, how are you today?
2.object.keys()方法
object.values(),object.values方法返回乙個陣列,成員是引數物件自身的(不含繼承的)所有可遍歷( enumerable )屬性的 鍵值
var obj =;console.log(object.entries(obj));
//得到以下資料
[ ["a", "小白"],
["b", "小黑"],
["c", "大黃"]
]
object.entries方法返回乙個陣列,成員是引數物件自身的(不含繼承的)所有可遍歷( enumerable )屬性的 鍵值對陣列
3.object.assign ()原物件的屬性和方法都合併到了目標物件
淺拷貝:複製的只是引用,原物件屬性的改變會引起拷貝物件對應引用屬性的變化。
let a =}let b =object.assign({},a);
a.friends.student = ['tony'];
console.log(a);
// }
const object1 =;const object2 = object.assign(, object1);
console.log(object2.c, object2.d);
console.log(object1)
//
4.for...of 迴圈
陣列原生具備iterator
介面(即預設部署了symbol.iterator
屬性),for...of
迴圈本質上就是呼叫這個介面產生的遍歷器
const arr = ['red', 'green', 'blue'];for(let v of arr)
const obj ={};
obj[symbol.iterator] =arr[symbol.iterator].bind(arr);
for(let v of obj)
5.promise物件
promise接受乙個**函式,**函式接收兩個引數,resolve(將promise的狀態從pending變為fulfilled,在非同步操作成功時呼叫,並將非同步操作的結果傳遞出去)、reject(將promise的狀態從pending變為rejected,在非同步操作失敗時呼叫,將非同步操作的錯誤作為引數傳遞出去)這兩個都是函式,表示成功和失敗的處理函式。then中接受的是上一次**返回的結果,所以這樣的鏈式呼叫就可以完全清晰的實現多層呼叫。
promise物件有兩個特點:
①,物件的狀態不受外界的影響,promise有三種狀態:pending(進行中)、fulfilled(已成功)、rejected(失敗),只用非同步操作的結果可以決定當前是哪一種狀態,其他任何操作都無法改變這個操作。
②.一旦狀態改變之後就不會再改變。任何時候都可以得到這個結果。狀態變化只有兩種可能:從pending到fulfilled和從pending到rejected。只要改變就已經定型了。
promise的缺點:
① 一旦建立就無法取消,一旦新建就會立即執行
② 如果不設定**函式,它的內部錯誤就不會反映到外部。
③ 當處於pending狀態時,無法判斷進展到哪一階段(剛開始還是快完成)。
let promise = new promise(function(resolve,reject));
settimeout(
function
(),0)
promise.then(
function
())console.log("hi");
//promise hi resolved settimeout
promise是建立之後立即執行,then方法指定的指令碼在當前的所有同步任務完成之後再執行,settimeout是在下一輪「時間迴圈」開始時執行,then在本輪事件迴圈結束時執行
6.set資料結構
可用於快速去重
7.字串新增方法
8.require和require區別
require 是 amd規範引入方式 import是es6的乙個語法標準,如果要相容瀏覽器的話必須轉化成es5的語法
呼叫時間 require是執行時呼叫,所以require理論上可以運用在**的任何地方 ;import是編譯時呼叫,所以必須放在檔案開頭
本質 require是賦值過程,其實require的結果就是物件、數字、字串、函式等,再把require的結果賦值給某個變數 import是解構過程,但是目前所有的引擎都還沒有實現import,我們在node中使用babel支援es6,也僅僅是將es6轉碼為es5再執行,import語法會被轉碼為require
9.資料型別判斷
typeof,可以判斷資料型別,它返回表示資料型別的字串(返回結果只能包括number,boolean,string,function,object,undefined);typeof 運算子的問題是無論引用的物件是什麼型別 它都返回object
instanceof,a instanceof b 可以判斷a是不是b的例項,返回乙個布林值
console.log(arr instanceof array ); //
true console.log(date instanceof date ); //
true console.log(fn instanceof function ); //
true
//注意: instanceof 後面一定要是物件型別,大小寫不能寫錯,該方法試用一些條件選擇或分支
3.object下的tostring.call()方法來判斷
object.prototype.tostring.call();console.log(tostring.call(123)); //
[object number]
console.log(tostring.call('123')); //
[object string]
console.log(tostring.call(undefined)); //
[object undefined]
console.log(tostring.call(true)); //
[object boolean]
console.log(tostring.call({})); //
[object object]
console.log(tostring.call()); //
[object array]
console.log(tostring.call(function(){})); //
[object function]
4.根據物件的contructor判斷
console.log('資料型別判斷' -constructor);console.log(arr.constructor === array); //
true
console.log(date.constructor === date); //
true
console.log(fn.constructor === function); //
true
js高階面試題總結(es6)
1 模組化 通過import 來呼叫其他js檔案中export的的模組 exp1.js export default exp2.js export function fn1 export function fn2 imp.js 匯入 import exp1 from exp1.js import f...
ES6面試題總結
1 說出至少5個es6的新特性,並簡述它們的作用。簡答題 1.let關鍵字,用於宣告只在塊級作用域起作用的變數 2.const關鍵字,用於宣告乙個常量 3.結構賦值,一種新的變數賦值方式。常用於交換變數值,提取函式返回值,設定預設值 4.symbol資料型別,定義乙個獨一無二的值 5.proxy 用...
前端面試題
sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...