[toc]
应用场景
- 网页应用: 像 Notion、Trello 这种漂亮的 Web 工具。
- 浏览器插件: 比如给自己做一个“去广告”或者“网页翻译”的小插件,这非常有成就感。
- 跨平台 App: 用一套代码(如 React Native)同时做出 iOS 和安卓应用。
执行环境
| |
js
书写:
- 在html中 用"“写js代码
- script 一般写在 body里面的最后
- 这样做的好处是 javaScript 代码可以在整个页面加载完成之后读取
- 单独写入js文件
规范:
- 小驼峰
- 常量, 全大写
js是弱类型的语言,运算时,自动转换类型
基础
调试
| |
基础
| |
| |
常用的内置数据类型
| 类型 | 用途 | 常用方法 |
|---|---|---|
| Array | 数组 | push, pop, shift, unshift, slice, splice, map, filter, reduce |
| Map | 键值对集合 | set, get, has, delete, clear |
| Set | 去重集合 | add, has, delete, clear |
| Object | 对象 | keys, values, entries, assign |
| String | 字符串 | split, substring, slice, indexOf, replace, toUpperCase |
| Number | 数字 | parseInt, parseFloat, toFixed, isNaN |
| Math | 数学运算 | Math.max, Math.min, Math.sqrt, Math.floor, Math.ceil |
| Date | 日期时间 | now, getTime, getFullYear, getMonth |
| RegExp | 正则表达式 | test, exec, match, replace |
| JSON | JSON 处理 | stringify, parse |
Symbol
- Undefine
- Null
TODO: 原型链
概念 创建属性方法的东西 定义构造函数后 结构 prototype constructor 定义的构造函数 使用 Object.prototype.func1 = function(){} 为所有对象创建属性,方法 函数名.prototype 为这个构造函数创建属性,方法 使用方法 Object.create({})
| |
| |
函数
创建
| |
| |
IIFE 迭代器 需要显式地维护其内部状态,不推荐 生成器函数 function* foo() { yield 1; yield 2; yield 3;}
多模块
ES模块
| |
异步请求
| |
CDN
是包含可分享代码库的服务器网络
类
ES5 引入 原型链 ES6 引入 class
- 类
- class
- 封装
- #属性
- #方法
- 继承
- extends
BOM
browser object model 作用 控制浏览器 window. 概念 js的全局对象,表示浏览器窗口 全局变量 存储内容 document 弹框 alert() 消息弹框 confirm() 确认框 let name = prompt() 输入字符串 location 含义: 当前url href 完整地址 protocol origin host hostname+port hostname ip的域名 port pathname 定时器 间隔 x = setInterval() clearInterval(x) 倒计时 x = setTimeout() clearTiemout(x) 打开关闭页面 open() close() 移动浏览器 scrollTo(0,0) 滚动到指定位置 history back() forword() go(index) screen avaliWidth avaliHeight navigator
DOM
| |
document object model 概念 html文档可以看成一颗树,DOM树 作用 获取各个节点的值,进行增删改查 元素操作 查 直接获取元素的方式 document.getElementById() document.getElementByClassName() document.getElementTagName() document.getElementName() 改 属性和样式 document.getAttriobute(“value”) document.setAttribute(“value”, “”) 修改值 ele.innerHTML = ‘qwer’; ele.k = v; ele.style.color = “blue”; js的事件 页面加载事件 操作 onunload 用户离开页面时被触发 onload 用户进入页面时被触发 作用 全部扫描完body后,才使用js函数。防止js运行失败 鼠标事件 点击 onclick ondblclick 状态 进出控件边界 onmouseenter onmouseleave 在控件上 onmouseover onmousemove 在控件上移动 onmouseout 手指放下抬起 onmousedown onmouseup 键盘事件 onkeydown onkeyup onkeypress form表单事件 提交 onsubmit onreset 焦点 onfocus onblur 失去焦点 文本 onchange 离开输入框时 oninput 绑定js事件 直接1
直接2 ele.onclick = function(){}; 间接 document.addEventListener() document.addEventListener(‘click’, function(event) { console.log(‘Clicked element ID:’, event.target.id);}); ele.addEventListener() document.removeEventListener() ele.removeEventListener() 添加删除 创建子控件 document.createElement(”") document.createTextNode(“这是一个新的段落。”); 增删子控件 appendChild() removeChild()jQuery
使用 使用本地 放到js文件夹里 src选择路径 使用cdn 教程 What is jQuery? (tutorialsteacher.com) jquery编写位置 确保 DOM 已完全加载 这是在编写任何jQuery代码之前需要编写的第一件事。您始终需要检查文档是否已准备就绪,以便安全地与 DOM 进行交互 原理 添加jQuery属性
选择器 $("#id") $(“标签名”) $(".class名") jq的DOM 属性 添加属性 $(#id).attr(“color”,“red”) 删除属性 $("#id").removeAttr(“color”) 使用 jQuery 操作 HTML 属性 (tutorialsteacher.com) 样式 $("#id").css(“color”, “blue”) class操作 添加 $("#id").addClass(“b”) 删除 $("#id").removeClass(“b”) 切换 $("#id").toggleClass(“b”) 文本 $("#id").text() $("#id").html() $("#id").val() 元素 母元素内部增加子元素 append() appendTo() 前增加 before() insertBefore() 后增加 after() insertAfter() 删除 删除子 empty() 删除母 remove() 与原生DOM的转换 原生->jq $(div1) jq->原生 div2[0] div2.get(0) 遍历 for each(fun1(i, e){}) e是原生的DOM i是下标 事件 直接调用 click() 点击绑定函数 mouseleaves 指定事件名调用 on(’’, function() {}) bind(“”, function()) unbind() one() 只执行一次 事件汇总 jQuery 事件方法 (w3schools.com) DOM Manipulation Methods Reference - jQuery (tutorialsteacher.com) ajax ajax 示例 参数 type get post put delete jQuery.ajax() | jQuery API Documentation get post load 动画 默认 $("#div1").show(3000) $("#div1").hide(3000) $("#div1").toggle(3000) 切换隐藏和显示 自定义 $("#div1").animate(a, b, c) 折叠收起
ts
所有合法的 JavaScript 代码,直接复制粘贴到 .ts 文件里,就是合法的 TypeScript 代码; TS 只是比 JS 多了「类型注解」,其余写法完全一致
类型注解
常用的类型注解
- string
- number
- boolean
- unknown
- void
类型注解怎么使用?
- 优先让 TypeScript 推断:在声明变量并直接赋值时,通常可以省略类型注解,让 TS 自动推断。
- 明确函数签名
- 函数的参数和返回值类型建议明确标注。
- 空数组初始化
运行
TypeScript 源代码,它不能直接被执行,需要转换为 JavaScript
| |
ts特有语法
接口(Interfaces):定义对象的结构
| |
泛型(Generics):创建可复用的组件
| |
枚举(Enums):定义一组命名常量
| |