@Javascript

動態 列表
@tinyang

js遞歸遍歷數組並判斷數組中的每一項如果都不為空則返回true,只要有一項為空則返回false

js遞歸遍歷數組並判斷數組中的每一項如果都不為空則返回true,只要有一項為空則返回false。一開始看到這樣的場景我就覺得很簡單沒難度,可真正上手才發現並不那麼簡單,而且想要讓代碼健壯就又複雜了些。於是經過一個小時的努力加不斷修改、增補,總算實現了自己想要的一個方法。 代碼如下: const isArrayEmpty = arr = { if (!Array.isArray(arr) ||

tinyang 頭像

@tinyang

昵稱 豫見世家公子

@yangge_5c6804373b5a0

js-while循環內使用定時函數的回調函數的問題

今天開發中碰到一個問題,卡了挺久的記錄一下。 標題其實正確表達為: js-while循環中不要使用定時函數中的回調函數中對循環條件的自變量進行自增或者自減,否則會導致進程假死。 首先 let i = 0; while(i 10){ i++; console.log(i) } 首先這個沒問題,正常打印1,2....10; let i = 0; let timer; while(i

@kevinzhw

GraphQL在現代Web應用中的應用與優勢

GraphQL是一種現代的API查詢語言,它在現代Web應用中得到了廣泛的應用,因為它提供了一種高效、靈活且強大的方式來獲取數據 GraphQL基礎快速應用示例: 1. 後端設置(使用graphql-yoga) 首先,我們需要創建一個GraphQL服務器。安裝graphql-yoga並創建一個簡單的GraphQL schema: npm init -y npm install graphql yo

kevinzhw 頭像

@kevinzhw

昵稱 天涯學館

@willemwei

模擬實現js中的new操作符

new 運算符創建一個用户定義的對象類型的實例或具有構造函數的內置對象的實例。 這是MDN上對new操作符的定義,從這句話中可以看出new返回的其實就是一個實例,那麼問題來了實例又是個啥東西? 先看個例子: function Cat(name, gender) { this.name = name; this.gender = gender; } Cat.prototype.sa

willemwei 頭像

@willemwei

昵稱 WillemWei

@willemwei

模擬實現Javascript中的bind函數

bind() 方法創建一個新的函數,在 bind() 被調用時,這個新函數的 this 被指定為 bind() 的第一個參數,而其餘參數將作為新函數的參數,供調用時使用。 從MDN對於bind的描述來看: 返回值是一個函數,而不是執行結果 this值會指向第一個參數 其餘參數會作為新函數的參數 看個例子: function test(name, age) { console.lo

willemwei 頭像

@willemwei

昵稱 WillemWei

@tianzhich

【譯】繼承與原型鏈(Inheritance and the prototype chain)

前言 原文來自MDN JavaScript主題的高階教程部分,一共5篇。分別涉及繼承與原型、嚴格模式、類型數組、內存管理、併發模型和事件循環。本篇是第一部分,關於繼承和原型。 原文鏈接請點我 下面是正文部分: 對於熟悉基於類的編程語言(例如 Java 和 C++)的開發者來説,JavaScript 會讓他們感到困惑,因為 JS 的動態性以及其本身並不提供class的實現(ES2015 中提出的c

tianzhich 頭像

@tianzhich

昵稱 小志Chris

@hai2007

理解prototype和__proto__(繼承與原型鏈)

從關係圖中可以看出來,ECMAScript中創建一個對象是通過new構造函數實現的,而本質上來説這個對象其實是以構造函數的屬性prototype指向的對象為基本模板的,因此新對象的__proto__屬性表明了自己來源於誰。 prototype 該屬性用來指向創建一個對象的基本模板,默認指向new構造函數,也可以修改,或者通過改屬性為新對象添加屬性。 需要注意的是,該屬性只有函數才有。 //構造函

hai2007 頭像

@hai2007

昵稱 你好2007

@tsteam

理解原型/原型鏈

對於搞前端的小夥伴來説,不管是新手還是老鳥,我想對於原型應該都被折騰過,總是雲裏霧裏的感覺,要是原型都沒搞明白,你還好意思説你是前端攻城獅? 關於對象 當一説到面向對象(Object-Oriented OO)時,你第一反應肯定想到類、對象、接口實現等概念,那我們這裏為啥已上來就説對象呢?因為ECMAScript裏沒有類,另外因為ECMAScript中的函數沒有簽名,所以也沒有接口。 ECMAScr

tsteam 頭像

@tsteam

昵稱 tsteam

@lewyon

javaScript原型和原型鏈

前言 在瞭解原型和原型鏈之前,我們先了解一部分概念,constructor,prototype,__proto__。 constructor 在之前判斷數據類型的文章: javaScript常見數據類型檢查校驗 有提到過關於構造函數的屬性constructor constructor 的是返回創建實例對象的 構造函數的引用,這個屬性的值是對函數本身的引用,而不是一個包含函數名稱的字符串 具體

lewyon 頭像

@lewyon

昵稱 程序猿布歐

@lewyon

JavaScript擴展原型鏈淺析

前言 上文對原型和原型鏈做了一些簡單的概念介紹和解析,本文將淺析一些原型鏈的擴展。 javaScript原型和原型鏈 http://lewyon.xyz/prototype.html 擴展原型鏈 使用new操作符 利用原型是對象的特性,實例化對象的時候,繼承多個構造函數的屬性和方法 兼容性:支持目前以及所有可想象到的瀏覽器 (IE5.5 都可以使用) function parent1(

lewyon 頭像

@lewyon

昵稱 程序猿布歐

@congjunhua

JavaScript的對象、原型、類和繼承

前言 HTML萬物皆標籤。 CSS萬物皆盒。 JavaScript萬物皆對象。 對象 JavaScript對象的本質是數據和功能的集合,語法上表現為鍵值對的集合。 鍵 對象的鍵可以理解為變量名。 值 對象的值的類型可以是任意數據類型。 鍵值對 鍵和值之間用:相連。 多組鍵值對之間用,分割。 let profile = { name: '吳彥祖', age: 48, char

congjunhua 頭像

@congjunhua

昵稱 從君華

@mi2nagemao

js原型鏈圖解

參考《你不知道的JavaScript(上卷)》,按照自己理解做的對象關聯關係圖解,不保真。 細節重申 對象通過原型鏈(__proto__)查找屬性,一直到找到為止; new 的主要作用是創建新對象,其__proto__指向函數的 prototype,以及關聯this到新對象; Object.create 創建新對象,並將其__proto__指向舊對象。 依圖校驗 function Foo

mi2nagemao 頭像

@mi2nagemao

昵稱 夜遊神

@budebinglin

JavaScript 原型鏈詳解

繼續補檔,發現這塊內容其實蠻多的。後面估計還會有兩篇(怎麼還有兩篇啊喂!),分別是 JavaScript執行原理·補 和 JavaScript部分特性,這周不知道能不能搞定。 先看 JS 原型鏈吧。 JS 繼承機制設計 1994年,網景公司(Netscape)發佈了 Navigator v0.9,轟動一時。但當時的網頁不具備交互功能,數據的交互全部依賴服務器端,這浪費了時間與服務器資源。 網景公司

budebinglin 頭像

@budebinglin

昵稱 阿菇kinoko

@doupifaner

AST,真香

豆皮粉兒們,又見面了,今天這一期,由字節跳動數據平台的太郎醬,帶大家走進AST的世界。 作者:太郎醬 什麼是AST 抽象語法樹(Abstract Syntax Tree, AST),是源代碼的抽象語法結構的樹狀表示,與之對應的是具體語法樹;之所以是抽象的,是因為抽象語法樹並不會表示出真實語法中出現的每一個細節,而且是文法無關、不依賴於語言的細節;可以把AST想象成一套標準化的編程語言接口定義,只不

doupifaner 頭像

@doupifaner

昵稱 豆皮範兒

@musicfe

手把手帶你走進Babel的編譯世界

作者:BoBoooooo 前言 談及 Babel,必然離不開 AST。有關 AST 這個知識點其實是很重要的,但由於涉及到代碼編譯階段,大多情況都是由各個框架內置相關處理,所以作為開發(使用)者本身,往往會忽視這個過程。希望通過這篇文章,帶各位同學走進 AST,藉助 AST 發揮更多的想象力。 AST 概述 想必大家總是聽到 AST 這個概念,那麼到底什麼是 AST? AST 全稱是是 Abs

musicfe 頭像

@musicfe

昵稱 雲音樂技術團隊

@thjjames

編寫babel的插件

前言 Babel 是一個通用的多功能的 JavaScript 編譯器,讓一些新版本的語法或者語法糖可以在低版本的瀏覽器上跑起來。 它有三個主要處理步驟 Parse - Transform - Generate。 在 Transform 轉換過程中通過將插件(或預設)應用到配置文件來啓用代碼轉換。 AST 編寫 Babel 插件非常複雜,需要有相當的基礎知識,在講插件之前必須得提起 AS

thjjames 頭像

@thjjames

昵稱 小皇帝James