原文: https://zswfx.com/articles/5dc8f64a9cf7c17b240e5c6c 我們經常在函數參數裏面使用如下操作 Array.prototype.slice.call(arguments, 1), 這樣的操作,類似還有 Object.prototype.toString.apply(o)這種操作,為什麼可以這樣玩呢? 前言 我們經常通過數組的方法去操作類數組,還會
從規範來看,Function.prototype.bind 是如何工作,以及如何來模擬bind操作。 簡單示例 如下簡單示例,普通對象 testObj 內部有一個b函數,接受一個普通參數,若參數為空則輸出 this.a。 const testObj = { a: 3, b: function(args) { console.log(args || this.a); }, };
來自:https://zswfx.com/articles/5db9285f9cf7c10e840e5c6a 我們經常用new來創建一個對象,但是創建對象過程中,到底發生了什麼呢? new 操作符的過程 上面是mdn的定義。 通過上面定義,我們知道使用new的時候,JS引擎就會給我們創建一個空對象作為 this值,然後執行函數,若函數沒有返回值,則默認返回這個空對象。 模擬 new 函數來
前提: 假設您已經知道為什麼在JavaScript中需要深拷貝和淺拷貝了。 舉兩個例子: const a = [1, 2, { key: 20 }] const b = [...a] b[2].key = 30 console.log(a[2] === b[2]) console.log(a === b) // true const o = { k1: { kk1: 50} } con
原文: https://zswfx.com/articles/5da713302ddd022595ff506a 我們在使用 Array.prototype.splice 方法的時候,都會提及説它速度慢,效率低。尤其在例如 Vue或者React 框架中也不推薦使用,原因是為什麼呢? splice 方法 方法介紹如下: 方法也比較明瞭,就是在數組內刪除或者添加元素。 如下示例: // 添加一個