国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

查漏補缺 - ES6

這篇具有很好參考價值的文章主要介紹了查漏補缺 - ES6。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

js 在 2015年發(fā)布了新版本,被稱為 es6,之后每年更新一個版本。自 es7 之后,就直接用年份命名了。

版本 年份
es6 2015
es7 2016
es2017 2017
es2018 2018

1,let 和 const

1,會產(chǎn)生塊級作用域。

if (true) {
  const a = 1
}
console.log(a) // ReferenceError: a is not defined

下面如果用 var 會打印3個2。

for (let i = 0; i < 3; i++) {
  setTimeout(function() {
    console.log(i)
  }, 1000)
}

2,如何理解 const 定義的變量不可被修改?

指這個變量不能被修改

  • 重新賦值,和修改這個對象的屬性值是沒有關系的。
const obj = {}

obj = 1 // TypeError: Assignment to constant variable.

obj.a = 1 // ok
  • 自增
const a = 1
a++ // TypeError: Assignment to constant variable.

2,數(shù)組

1,for…of 用于遍歷可迭代對象,也包括偽數(shù)組,比如 arguments,NodeList(querySelectAll 獲取的)

2,判斷是不是數(shù)組,Array.isArray()

3,解構數(shù)組

const arr = [1, 2, 3, 4, 5];

const [a, b] = arr; // 1 2
const [, , a, b] = arr; // 3 4
const [a, , b, c] = arr; // 1 3 4
const [a, b, ...c] = arr; // 1 2 [ 3, 4, 5 ]

4,數(shù)組去重

const arr = [1, 3, 4, 3, 6];
const newArr = [...new Set(arr)]; // [ 1, 3, 4, 6 ]

5,打平數(shù)組

參數(shù)為遍歷的層級。

const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]

const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]

const arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]

const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

6,創(chuàng)建指定 length 的數(shù)組

Array(10).fill(0)

3,對象

1,Object.is()

MDN - Object.is(),判斷2個值是否相同,和 === 唯一的區(qū)別是:

Object.is(-0, +0) // false
Object.is(NaN, NaN) // true

-0 === +0 // true
NaN === NaN // false

Array.prototype.includes() 使用的就是 Object.is() 的規(guī)則。

2,屬性描述符

js 使用屬性描述符,來描述對象中的每個成員。vue2 通過此特性實現(xiàn)響應式核心原理。

const obj = {
  name: '下雪天的夏風',
  age: 18
};

在 js 內部被描述為

{
  // 屬性 name 的描述符
  name: {
    value: '下雪天的夏風',
    configurable: true, // 該屬性的描述符是否可以被重新定義
    enumerable: true, // 該屬性是否允許被遍歷,會影響for-in循環(huán)
    writable: true // 該屬性是否允許被修改
  },
  // 屬性 age 的描述符,同理。
  age: {
    value: '18',
    configurable: true,
    enumerable: true,
    writable: true
  },
}

有 API 可以操作屬性描述符

const obj = {
  name: '下雪天的夏風',
  age: 18
};

// 修改屬性描述符
Object.defineProperty(obj, "name", {
  value: "新值",
  writable: false,
  enumerable: false,
  configurable: true,
});

// 獲取屬性描述符
Object.getOwnPropertyDescriptor(obj, "name");

// 輸出
{
  value: '下雪天的夏風',
  writable: false,
  enumerable: false,
  configurable: true
}

1,屬性描述符 writable: false 時,修改無效,但不報錯。

2,當通過 Object.defineProperty 設置 configurable: false 后,就不能再次修改屬性描述符了,會報錯。

gettersetter

const obj = {};

let init;

Object.defineProperty(obj, "a", {
  get() { // 讀取屬性 a 時,得到的是該方法的返回值
    return init;
  },
  set(val) { // 設置屬性 a 時,會把值傳入 val,調用該方法
	init = val
  }
});

3,常用API

const obj = { name: "名字", age: "年齡" };
console.log(Object.keys(obj)); // [ 'name', 'age' ]
console.log(Object.values(obj)); // [ '名字', '年齡' ]
console.log(Object.entries(obj)); // [ [ 'name', '名字' ], [ 'age', '年齡' ] ]

還有一個,正好和 Object.entries() 相反。

const obj = Object.fromEntries([
  ["name", "名字"],
  ["age", "年齡"],
]); // { name: '名字', age: '年齡' }

4,得到除某個屬性之外的新對象。

const obj = {
  a: 1,
  b: 2,
  c: 3,
};

const { a, ...newObj } = obj; // newObj { b: 2, c: 3 }

//或
const newObj = {...obj}
delete newObj.a

·

4,函數(shù)

1,箭頭函數(shù)

特點

  1. 不能使用new調用
  2. 沒有原型,即沒有prototype屬性
  3. 沒有arugments
  4. 沒有this

關于原型

普通函數(shù):

查漏補缺 - ES6,interview,js,es6,javascript,前端

箭頭函數(shù):

查漏補缺 - ES6,interview,js,es6,javascript,前端

關于 arugments :

function fun() {
  const fun2 = () => {
    console.log(arguments);
  };
  fun2(1, 2);
}
fun(3, 4); // [Arguments] { '0': 3, '1': 4 }

在箭頭函數(shù)中,可以使用剩余參數(shù)代替 arguments

const fun = (a, ...args) => {
  console.log(a, args); // 1 [ 2, 3, 4 ]
  console.log(Array.isArray(args)); // true
};
fun(1, 2, 3, 4);

2,默認參數(shù)

const fun = (a, b = 1) => {
  console.log(a, b);
};
fun(1, undefined); // 1 1

3,解構傳參

const fun = (config = { page: 1, limit: 10 }) => {
  console.log(config); // { page: 1 }  { page: 2, limit: 10 }
};

// 這樣才能使用默認值
const fun = ({ page = 1, limit = 10 } = {}) => {
  console.log(page, limit); // 1 10 和 2 10
};

fun({ page: 1 });

fun({
  page: 2,
  limit: 10,
});

4,類語法

基礎寫法:

// 舊的寫法
function User(firstName, lastName){
  this.firstName = firstName;
  this.lastName = lastName;
  this.fullName = `${firstName} ${lastName}`;
}
User.isUser = function(u){
  return u && u.fullName
}
User.prototype.sayHello = function(){
  console.log(`姓名:${this.fullName}`);
}

// es6 等效寫法
class User{
  constructor(firstName, lastName){
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = `${firstName} ${lastName}`;
  }
  
  static isUser(u){
  	 return u && u.fullName
  }
  
  sayHello(){
    console.log(`姓名:${this.fullName}`);
  }
}

繼承關系

function Animal(type, name){
  this.type = type;
  this.name = name;
}

Animal.prototype.intro = function(){
  console.log(`I am ${this.type}, my name is ${this.name}`)
}

function Dog(name){
  Animal.call(this, '狗', name);
}

Dog.prototype = Object.create(Animal.prototype); // 設置繼承關系

// 新的方式

class Animal{
  constructor(type, name){
    this.type = type;
    this.name = name;
  }
  
  intro(){
    console.log(`I am ${this.type}, my name is ${this.name}`)
  }
}

class Dog extends Animal{
  constructor(name){
    super('狗', name); // 調用父級構造函數(shù)
  }
}

以上。文章來源地址http://www.zghlxwxcb.cn/news/detail-705596.html

到了這里,關于查漏補缺 - ES6的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【ES6】JavaScript中的Symbol

    【ES6】JavaScript中的Symbol

    Symbol是JavaScript中的一種特殊的、不可變的、不可枚舉的數(shù)據(jù)類型。它通常用于表示一個唯一的標識符,可以作為對象的屬性鍵,確保對象的屬性鍵的唯一性和不可變性。 Symbol.for()是Symbol的一個方法,它用于創(chuàng)建一個已經(jīng)注冊的Symbol對象。當使用Symbol.for()創(chuàng)建Symbol對象時,會

    2024年02月10日
    瀏覽(28)
  • JavaScript版本ES5/ES6及后續(xù)版本

    JavaScript版本ES5/ES6及后續(xù)版本

    Brendan Eich在短短10天內創(chuàng)建了JavaScript的第一個版本。它被稱為摩卡,但已經(jīng)具備了現(xiàn)代JavaScript的許多基本特性! 為了吸引Java開發(fā)人員,Mocha先是更改為LiveScript,然后又更改為JavaScript然而,JavaScript與Java幾乎沒有任何關系; 微軟推出了IE,從網(wǎng)景復制JavaScript,并稱之為JScript; 由

    2024年02月13日
    瀏覽(33)
  • JavaScript之ES6高級語法(一)

    JavaScript之ES6高級語法(一)

    本文是我在學習過程中記錄學習的點點滴滴,目的是為了學完之后鞏固一下順便也和大家分享一下,日后忘記了也可以方便快速的復習。 今天學習的主要是關于ES6新語法知識的理解和應用 棧負責存放簡單數(shù)據(jù)類型,堆負責存放復雜數(shù)據(jù)類型,但是復雜數(shù)據(jù)類型會把內容存在

    2024年02月09日
    瀏覽(24)
  • JavaScript:ES6中類與繼承

    在JavaScript編程中,ES6引入了一種更現(xiàn)代、更清晰的方式來定義對象和實現(xiàn)繼承,那就是通過類和繼承機制。本文將以通俗易懂的方式解釋ES6中類與繼承的概念,幫助你更好地理解和應用這些特性。 1. 類的創(chuàng)建與使用 類是一種模板,用于創(chuàng)建對象。在ES6中,我們可以使用 cl

    2024年02月13日
    瀏覽(25)
  • 【Javascript】ES6新增之類的認識

    在現(xiàn)代編程語言中,類是面向對象編程范式中的核心概念之一。 與函數(shù)類似,類本質上是一種特殊的函數(shù),它允許我們將數(shù)據(jù)和操作封裝在一起,以創(chuàng)建具有共同行為和狀態(tài)的對象。 在類的世界里,我們有類表達式和類聲明,它們各自具有自己的特性和用途。 ? 類本質上是

    2024年02月13日
    瀏覽(24)
  • 前端-ES6

    let 和 const 為了解決var的作用域的問題,而且var 有變量提升,會出現(xiàn)全局污染的問題 let 塊狀作用域,并且不能重復聲明 const 一般用于聲明常量,一旦被聲明無法修改,但是const 可以聲明一個對象,對象內部的屬性是可以修改的 建議: 在默認的情況下用const, 而只有你知道

    2024年02月12日
    瀏覽(17)
  • 15 JavaScript ES6中的箭頭函數(shù)

    15 JavaScript ES6中的箭頭函數(shù) 什么是箭頭函數(shù) ES6中允許使用=來定義函數(shù)。箭頭函數(shù)相當于匿名函數(shù),并簡化了函數(shù)定義。 基本語法 箭頭函數(shù)在語法上比普通函數(shù)簡潔多。箭頭函數(shù)就是采用箭頭=來定義函數(shù),省去function。 函數(shù)的參數(shù)放在=前面的括號中,函數(shù)體跟在=后的

    2024年02月12日
    瀏覽(20)
  • JavaScript學習筆記01(包含ES6語法)

    Js 最初被創(chuàng)建的目的是“使網(wǎng)頁更生動”。 Js 寫出來的程序被稱為 腳本 ,Js 是一門腳本語言。 被直接寫在網(wǎng)頁的 HTML 中,在頁面加載的時候自動執(zhí)行 腳本被以純文本的形式提供和執(zhí)行,不需要特殊的準備或編譯即可運行(JIN compiler) Js 不僅可以在瀏覽器中執(zhí)行,也可以在

    2024年02月16日
    瀏覽(30)
  • 【ES6】 JavaScript 中的Object.assign

    Object.assign() 是 JavaScript 中的一個方法,它用于復制源對象的所有可枚舉屬性到目標對象。該方法會返回目標對象。 這是其基本用法: 在這個例子中,source 對象的所有可枚舉屬性都被復制到了 target 對象。 需要注意的是,Object.assign() 是淺復制(shallow copy),意味著如果源對

    2024年02月10日
    瀏覽(21)
  • JavaScript、TypeScript、ES5、ES6之間的聯(lián)系和區(qū)別

    JavaScript、TypeScript、ES5、ES6之間的聯(lián)系和區(qū)別

    ECMAScript: ?一個由 ECMA International 進行標準化,TC39 委員會進行監(jiān)督的語言。通常用于指代標準本身。 JavaScript: ?ECMAScript 標準的各種實現(xiàn)的最常用稱呼。這個術語并不局限于某個特定版本的 ECMAScript 規(guī)范,并且可能被用于任何不同程度的任意版本的 ECMAScript 的實現(xiàn)。 ECMAS

    2024年02月13日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包