Salesforce 开发者的 JavaScript 技能:核心概念到异步模式

掌握 Lightning Web Components 开发必备的 JavaScript 知识。本文系统覆盖六大主题:JavaScript 核心概念(变量、数据类型、运行时、事件循环)、浏览器中的 JavaScript(Web API、DOM、Shadow DOM 封装)、对象/类/原型继承、事件与函数、作用域/上下文/闭包、以及异步模式(回调、Promise、async/await),每个主题都直接关联 LWC 开发——this 绑定、@wire 适配器、Apex 调用、响应式渲染。...

📅 2026/10/5 ✍️ ponybai 🏷️ salesforce, developer, javascript, lwc, headless

一、学习 JavaScript 核心概念

slide_2

本模块覆盖 Lightning Web Components 开发必备的 JavaScript 知识——从核心语言概念到浏览器 API、对象与继承、事件与函数、作用域与闭包、异步模式,每个主题都直接关联 LWC 开发。

学习目标

slide_3

完成本单元后,你将能够:解释 JavaScript 是什么及为什么对 Salesforce 重要;理解 JavaScript 运行时;识别关键语言特性和语法;把 JavaScript 基础应用到 LWC 开发。

JavaScript 的什么、为什么、如何、运行时与语言

slide_4

什么/为什么/如何:JavaScript 是 Web 的语言——也是 LWC 的语言;每个 Lightning Web Component 都由 JavaScript 驱动;深入理解 JS = 构建更好的 LWC。

运行时:JavaScript 运行在运行时环境(浏览器、Node.js);运行时提供调用栈、堆内存、事件循环;单线程(一次一个操作);事件循环在不阻塞的情况下处理异步操作。

语言要点:变量(let、const,避免 var);数据类型(string/number/boolean/object/array/null/undefined);运算符;控制流(if/else、switch、for、while、for...of);函数(声明、表达式、箭头函数);模板字面量(`Hello ${name}`);解构(const { field } = object);展开/剩余(...array);模块(import/export)。每个 LWC 的 .js 文件都用这些概念。

二、理解浏览器中的 JavaScript

slide_5

理解 JavaScript 如何在浏览器中工作、探索 Web API、DOM、Shadow DOM 封装,以及 LWC 如何与这些交互。

学习目标(单元二)

slide_6

完成本单元后,你将能够:解释 JavaScript 如何在浏览器中工作;区分 JavaScript 运行时和浏览器 API;理解 DOM 和 Shadow DOM;把这些概念连接到 LWC 开发。

浏览器运行时、Web API、DOM 与 LWC

slide_7

浏览器中的 JavaScript:浏览器提供运行时和 Web API;JavaScript 运行时 ≠ 浏览器,浏览器 ≠ JavaScript。Web API:DOM API(操作 HTML 元素)、Fetch API(HTTP 请求)、Storage API(localStorage/sessionStorage)、Geolocation、Canvas、WebSocket 等。

DOM:HTML 结构的树表示;JavaScript 可查询、创建、修改、删除元素(document.querySelector('.my-class')、element.addEventListener('click', handler))。

Shadow DOM 封装:隔离组件内部结构;样式不外泄、外部样式不侵入;这是 LWC 实现组件封装的方式。

LWC 与 DOM:每个 LWC 渲染在自己的 Shadow DOM;用 this.template.querySelector() 在组件内查询;LWC 通过响应式高效处理 DOM 更新;你很少直接操作 DOM——LWC 替你完成,用 tracked 属性和模板指令即可。

三、使用对象、类与原型继承

slide_8

深入对象——JavaScript 的基础数据结构——覆盖创建、属性、继承、类,以及 LWC 如何利用对象。

学习目标(单元三)

slide_9

完成本单元后,你将能够:创建和操作 JavaScript 对象;理解对象的可变性和继承;用 ES6 class 实现面向对象模式;在 LWC 开发中应用对象概念。

对象、类、继承与 LWC

slide_10

创建对象:对象字面量({ name: 'Acme', industry: 'Tech' })、构造函数(new Account())、Object.create() 显式原型链。

属性与方法:点号(obj.name)、方括号(obj['name'])、方法(obj.getDescription = function() {...})。

可变性:对象可变——属性随时可变;const 阻止重新赋值而非修改;Object.freeze() 实现不可变。

继承:原型链(每个对象链接到原型,方法通过原型共享)。类:ES6 class 是原型的语法糖(class Account { constructor(name) {...} }、extends 继承、static 方法、getter/setter、私有字段 #field)。

LWC 与对象:LWC class 继承 LightningElement;@track、@api、@wire 是类属性上的装饰器;组件状态存在对象属性中;响应式属性变化时触发重新渲染。

四、用事件与函数采取行动

slide_11

探索函数——定义、调用、作为事件处理器使用——以及事件和函数如何在 LWC 中协同工作。

学习目标(单元四)

slide_12

完成本单元后,你将能够:用多种方式定义和赋值函数;理解函数调用和 this 关键字;用函数作为事件处理器;在 LWC 中应用事件和函数模式。

函数、事件与 LWC

slide_13

定义与赋值函数:函数声明(function handleClick() {...})、函数表达式(const handleClick = function() {...})、箭头函数(const handleClick = () => {...},没有自己的 this)。

函数调用:直接调用、方法调用(this 是对象)、构造函数(new)、call/apply/bind 显式绑定 this。

事件处理器:element.addEventListener('click', handleClick)、内联 <button onclick={handleClick}>、事件对象(event.target)。

LWC 中的事件与函数:模板事件绑定、自定义事件(this.dispatchEvent(new CustomEvent('select')))、父子通信(@api 方法、自定义事件)、事件传播(bubbles、composed 标志)、标准 DOM 事件(click、change、submit、keyup)。LWC 模式:用户动作 → DOM 事件 → 处理函数 → 状态更新 → 响应式重新渲染。

五、了解上下文、作用域与闭包

slide_14

攻克 JavaScript 最重要也常令人困惑的概念:作用域、上下文、this 关键字和闭包。

学习目标(单元五)

slide_15

完成本单元后,你将能够:理解变量作用域(var vs let vs const);解释 this 关键字和上下文;用闭包实现数据隐私和函数工厂;在 LWC 中应用作用域和闭包模式。

作用域、上下文、this、全局对象与闭包

slide_16

变量作用域:var 函数作用域(可能泄漏到块外);let/const 块作用域(更安全);作用域链(内层函数可访问外层变量)。

上下文与 this:this 取决于如何调用函数而非在哪里定义;全局(this=window/global)、方法调用(this=对象)、箭头函数(继承外层 this)、事件处理器(this=触发事件的元素)。LWC 常见模式:用箭头函数保留 this。

全局对象:浏览器 window、Node.js global;LWC 模块中没有真正的全局(模块是作用域的)。

闭包:记住词法作用域的函数;内层函数在外层函数返回后仍能访问其变量;用途:数据隐私、函数工厂、模块模式。示例:function createCounter() { let count=0; return ()=>++count; }。在 LWC 中,闭包支撑响应式属性和 wire 适配器。

六、编写异步 JavaScript

slide_17

探索异步 JavaScript——从回调到 Promise 再到 async/await——以及 LWC 如何用这些模式做服务端调用和数据加载。

学习目标(单元六)

slide_18

完成本单元后,你将能够:解释为什么异步 JavaScript 无处不在;用回调、Promise 和 async/await;写箭头函数做简洁异步代码;在 LWC 中应用异步模式做 Apex 调用和数据加载。

异步 JavaScript:回调、Promise、async/await 与 LWC

slide_19

异步无处不在:API 调用、文件读取、定时器、用户事件都是异步;LWC 的 Apex 调用是异步的——必须处理响应而非返回值。

回调模式:传一个函数在操作完成时调用;问题:回调地狱(嵌套回调难以阅读)。箭头函数:array.map(item => item.name)、.then(result => {...})。

Promise:表示未来的值;状态 pending → fulfilled(resolved)或 rejected;.then(...).catch(...);Promise.all(等待全部)、Promise.race(先完成者胜)。

async/await:最干净的模式;async function myMethod() {...}、const result = await asyncOperation();看起来同步、实际异步(非阻塞);用 try/catch 处理错误。

LWC 与异步:@wire 适配器异步返回数据;Apex 调用 methodName().then(...).catch(...) 或 await;生命周期钩子 connectedCallback()、renderedCallback();始终处理 loading/error 状态(if(data) 显示数据、else if(error) 显示错误、否则显示 spinner)。


文章来源:Trailhead - JavaScript Skills for Salesforce Developers