JavaScript笔记
2021/10/18 20:10:13
本文主要是介绍JavaScript笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一章:JavaScript
什么是JavaScript
JavaScript是一种基于对象和事件驱动的、跨平台的、并具有安全性能的脚本语言JavaScript特点
向HTML页面中添加交互行为 脚本语言,语法和Java类似 解释性语言,边执行边解释JavaScript的基本结构
语法: <script type="text/javascript"> <!— JavaScript 语句; —> </script > 备注:有的网页中用缺省type="text/Javascript",这种写法是正确的,因为HTML5中可省略type属性,HTML5默认为是text/Javascript。JavaScript的应用
<title>初学JavaScript</title> </head> <body> <script type="text/javascript"> document.write("初学JavaScript"); document.write("<h1>Hello,JavaScript</h1>"); </script> </body> </html> 注意: <script>…</script>可以包含在文档中的任何地方,只要保证这些代码在被使用前已读取并加载到内存中即可网页中引用JavaScript的方式
使用<script>标签: 外部JS文件: <script type="text/javascript" src="index.js" ></script> 直接在HTML标签中: <input name="btn" type="button" value="弹出消息框" οnclick="javascript:alert('欢迎你');"/>JavaScript核心语法
变量 数据类型 数组 运算符号 控制语句 注释 输入/输出 语法约定核心语法—变量
先声明变量再赋值 var width; var:用于声明变量的关键字 width = 5; width:变量名 同时声明和赋值变量 var name="皮皮"; var x, y, z = 10; 注意:JavaScript区分大小写,特别是变量的命名、语句关键字等核心语法—数据类型
undefined: var width; 变量width没有初始值,将被赋予值undefined null: 表示一个空值,与undefined值相等 number: var iNum=23; //整数 var iNum=23.0; //浮点数 boolean: true和false String: 一组被引号(单或双引号)括起来的文本 var string="This is JavaScript";核心语法— typeof运算符
typeof: 检测变量的数据类型 typeof运算符的返回值如下: undefined:变量被声明但还未被赋值 String:用单引号或双引号来声明的字符串 boolean:true或false number:整数或浮点数 object:javascript中的对象、数组和null核心语法—String对象
属性: 字符串对象.length 方法: 字符串对象.方法名();
方法名称 说 明 charAt(index) 返回在指定位置的字符 indexOf(str) 查找指定字符串在原字符串中首次出现的位置 substring(index1,index2) 返回位于指定索引 index1和index2之间的字符串(包括index1但不包括index2对应的字符) split(str) 将字符串分割为字符串数组 核心语法—数组
创建数组: var 数组名称 = new Array(length); 注意: new:数组的关键字 length:表示数组中可存放的元素总数 数组名[下标]来访问数组元素数组的常用属性和方法
类别 名称 描 述 属性 length 设置或返回数组中元素的个数 方法 join( ) 把数组的所有元素组合为一个字符串,通过一个分隔符进行分隔 方法 sort() 对数组排序 方法 push() 向数组末尾添加一个或多个元素,并返回新的长度 核心语法—运算符号
类型 运算符 算术运算符 + - * / % ++ — 赋值运算符 = += -= 比较运算符 > < >= <= == != === !== 逻辑运算符 && || ! ===与==的区别: 1、==(等于):只比较表面值,如“2”和2 相等 2、===(绝对等于):同时比较表面值和数据类型,所以“2”和2不相等;核心语法—逻辑控制语句
if条件语句 switch多分支语句 for、while循环语句 for-in 示例: var fruit=[ "apple", "orange", "peach","banana"]; for(var i in fruit){ document.write(fruit[i]+"<br/>"); }核心语法—循环中断
break; 中断 continue; 满足条件再进行下次循环核心语法—注释
单行注释: 以 // 开始,以行末结束 多行注释: /* …… */ ,表示其中的语句是该程序中的注释核心语法—常用的输入/输出
警告对话框:alert(“警告信息"); 提示对话框:prompt("提示信息", "输入框的默认信息");核心语法—语法约定
代码区分大小写 变量、对象和函数的名称 分号第二章:
BOM浏览器对象模型
BOM中的核心对象:window
1.window对象常用的属性:
history: 有关客户访问过的URL信息 location:有关当前URL的信息 语法:window.属性名="属性值" 列如:window.location="http://www.baid.com" 2.window对象常用的方法
prompt("需要输入的内容"):输入 alert():带有提示的警示框 confirm():显示一个带有提示信息的确定取消框 open("弹出窗口的URL",等待毫秒秒数):注意只执行一次 setTimeont("调用的函数",等待的毫秒数):注意只执行一次 例子: var myTime = setTimeont("dispTime()",3000) clearTimeout(myTime); setInterval:("调用的函数",间隔的毫秒数):每个多少秒执行一次函数 var myTime=setInterval("disptime()",3000)clearInterval(myTime); clearTimeout();清除函数(一次性); clearInterval();清除函数(永久性);2.history对象
back():后退 forward():前进 go():加载history对象列表中的某个具体的URL,正数表示前进多少,负数表示后退多少 history,go(1):等价于hisTory.forward() history,go(1):等价于hisTory.back()3.location对象常用的属性和方法
属性: host():设置或返回主机名和当前URL的端口号 hostname():设置或返回当前URL的端口号 方法: relad():刷新 replace():用新的文档替换当前文档4.document对象常用的属性和方法
属性: referrer.返回载入当前文档的URL URL:返回当前文档URL 方法: getElementByld():返回拥有ID的第一个对象的引用 getElementByName():返回带有指令name名称的对象集合 getElementByTagName():返回带有指定标签的对象集合 write():向文档写文本,HTML代码或JavaScript代码 innerHTML JavaScript内置对象
Math:用于执行常用的数学问题,包含了若干个数常量和函数 常用的方法: ceil():对数向上取整,如果放到是小数,取两个整数之间交大的值 floor():向下取整,同上 round():对数进行四色五入,有一个例外:若是负数,则是五舍六入 random():返回一个0-1之间的随机数 求某数与某数之间的随机数公式:Math.random()*(最大值-最小值+1)+最小值2.Date:用于操作时间
常用的方法
getDate():一个月的每一天值介于1-31之间 getDay():星期的每一天,值介于0-6之间 getHours():小时,0-23之间 getMinutes():分钟,0-59之间 getSeconds():秒,0-59之间 getMonth():月份,0-11之间 getFullYear():年份:四位数 getTime():返回某一时刻(1970年1月1日)以来的毫秒数。案例应用笔记
一、document对象定位dom对象的三种方式
1、通过id属性定位 var domOb = window.document.getElementBuId("id属性值"); 2、通过name属性来定位 var domOb = window.document.getElementByName("name属性值") 注意:domOb这是一个数组 3、通过标签名称定位 var domObj = document.grtElementByTagName("标签名称") 注意:domObj这是个按钮 案例:获取复文本框的value值并赋值给文本框二、标签属性
1、value属性:取值 和 赋值的操作 2、双目标签中的内容或者提示信息 innText:纯文本信息 innHTML:可解析html标签 3、style属性:设置标签样式 语法格式:dom对象.style.样式属性名 = "样式属性值" 4、checked:默认选中项属性 一般用在复选框中 如果复选框处于选中状态,则checked的属性值返回true 如果复选框处于未选中状态,则checked的属性值返回flse三、监听事件
鼠标/键盘的监听事件
1、键盘 onkeydown :当键盘上.某个键被按下 onkeyup :当键盘上某个键弹起 onkeypress :完成次按键的操作 注意:三个只需要记住一个就可以了 2、鼠标 oncLick :监听鼠标的单击事件 onbLur :监听光标 失去光标 onfocus :监听光标 获得光标 onm ouseover :鼠标移入(悬停) onm ouseout :鼠标移出 onchange :监听下拉列表,当下拉列表改变时触发函数监听事件的绑定方式
1、在标签内部 语法格式:监听事件名="函数名()"; 注意:函数名后没有括号 2、通过dom对象绑定监听事件 语法格式:dom对象.监听事件名=函数名; 注意:函数后边后没有括号 区别: 标签内部绑定方式一次只能绑定一个标签 绑定的函数由window对象的调用 通过dom对象的绑定方式一次能够绑定多个标签 绑定的函数由dom对象调用四、onloand的监听事件
监听body标签内的标签在何时加载完毕,当加载完毕时会触发这个监听事件绑定的函数,一般情况下绑定的是main函数 onload监听事件写在script标签内的语法格式:window.onload = main;失去光标和获得光标
一、 onblur:失去光标 onfocus:获得光标 案例:密码和重复密码(demo2) onchange:监听下拉列表 当下拉列表的列表项发生改变时会触发onchange监听事件 案例:下拉列表的级联操作(demo3) 注意:定位的select标签所对应的dom的value值 这个值就是显示option标签的value值 二、return:返回到函数调用的位置,当前函数就结束了,不会再执行了innerHTML和innerText的区别 text()和html()的区别
innerHTML指的是从对象的起始位置到终止位置的全部内容,包括Html标签。 innerText 指的是从起始位置到终止位置的内容,但它去除Html标签。 同时,innerHTML 是所有浏览器都支持的,innerText 是IE浏览器和chrome 浏览器支持的,Firefox浏览器不支持。其实,innerHTML 是W3C 组织规定的属性;而innerText 属性是IE浏览器自己的属性 给innerHTML属性设置内容后, 会将内容中包括的标签解析. innerText不会.style样式属性
<style> div { height: 300px; width: 300px; background-color: red; } </style> <center> <div id="first" οnclick="fun1()"> </div> </center> <script type="text/javascript"> //声明一个函数 function fun1() { //1.通过id属性定位关联的dom对象 var domObj = document.getElementById("first"); //2.设置div的样式 domObj.style.width="400px"; domObj.style.height="400px"; domObj.style.backgroundColor="blue"; domObj.style.borderRadius="50%"; } </script>name属性案例
<script type="text/javascript"> //声明函数 <function fun1(){ //1.通过name属性值定位标签所得应的dom对象 var domObjArray = document.getElementByName("ck"); //声明一个变量存储每一次获取到的value值 var content = ""; for(var i = 0; i < domObjArray.length; i++){ //获取数组中每一个dom对象的value属性值 var data = domObjArray[i].value; content = content + data + " ";//content += data; } //获取文本框的对应的dom对象 var domObj = document.geElementByName("textName") //给文本框赋值 domObj[0].value = content; } </script> 学习课程: <inpt type="checkbox" name="ck" value="htlm"/>htlm <inpt type="checkbox" name="ck" value="css"/>css <inpt type="checkbox" name="ck" value="javaSE"/>javaSE <inpt type="checkbox" name="ck" value="javaScript"/>javaScript <br/> <input type="text" nam="textName"/> <br/> <input type="button" value="获取复选框的数据赋值给文板框" οnclick="fun1">标签名称案例对象
<script type="text/javascript"> //声明函数 <function fun1(){ //1.通过name属性值定位标签所得应的dom对象 var domObjArray = document.getElementByName("input"); //遍历 for (var i = 0; i<domObjArray.length-2; i++){ //获取数组的每一个dom对象value属性值 ar data = domObjArray[i].value; content = content + data + " ";//content += data; } </script> 学习课程: <inpt type="checkbox" name="ck" value="htlm"/>htlm <inpt type="checkbox" name="ck" value="css"/>css <inpt type="checkbox" name="ck" value="javaSE"/>javaSE <inpt type="checkbox" name="ck" value="javaScript"/>javaScript <br/> <input type="text" nam="textName"/> <br/> <input type="button" value="获取复选框的数据赋值给文板框" οnclick="fun1">加减乘除计算
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>加减乘除</title> <script type="text/javascript"> function jia() { //1.获取标签对应的dom对象 var yuwen2 =document.getElementById("yuwen").value; var shuxu2 =document.getElementById("shuxu").value; //2.获取用户输入的数据并转换为number类型 var yuwen3 = parseInt(yuwen2); var shuxue3 = parseInt(shuxu2); //计算 var jiajie = yuwen3+shuxue3; //赋值和应用 document.getElementById("jieguo").value=jiajie; } function jian() { var yuwen2 =document.getElementById("yuwen").value; var shuxu2 =document.getElementById("shuxu").value; var yuwen3 = parseInt(yuwen2); var shuxue3 = parseInt(shuxu2); var jianjie = yuwen3-shuxue3; document.getElementById("jieguo").value=jianjie; } function cheng() { var yuwen2 =document.getElementById("yuwen").value; var shuxu2 =document.getElementById("shuxu").value; var yuwen3 = parseInt(yuwen2); var shuxue3 = parseInt(shuxu2); var chengjie = yuwen3*shuxue3; document.getElementById("jieguo").value=chengjie; } function chu() { var yuwen2 =document.getElementById("yuwen").value; var shuxu2 =document.getElementById("shuxu").value; var yuwen3 = parseInt(yuwen2); var shuxue3 = parseInt(shuxu2); var chujie = yuwen3/shuxue3; document.getElementById("jieguo").value=chujie; } </script> </head> <body> <div> <table border="3"> <tr> <td>语文</td> <td colspan="3"><input type="text" id="yuwen"></td> </tr> <tr> <td>数学</td> <td colspan="3"><input type="text" id="shuxu"></td> </tr> <tr> <td><input type="button" value="加" οnclick="jia()"></td> <td><input type="button" value="减" οnclick="jian()"></td> <td><input type="button" value="乘" οnclick="cheng()"></td> <td><input type="button" value="除" οnclick="chu()"></td> </tr> <tr> <td>结果</td> <td colspan="3"><input type="text" id="jieguo"></td> </tr> </table> </div> </body> </html>第三章
dom树结构
一、DOM
document object model 文档对象模型 DOM core:所有的文档类型标准模型 XML DOM:XML文档标准模型 HTML DOM:HTML文档标准模型二、 HTML DOM
把html文档呈现为一个带有元素、属性、文本的树结构(dom树)三、
1、在html文档中每一个成分都是一个节点 整个文档是一个文档节点 每一个html标签是一个元素节点 包含在html元素中的文本是文本节点 每一个html元素中属性是属性节点四、节点与节点之间的关系
根节点 父节点 子节点 兄弟节点五、节点的访问
1、使用getElementBY系列方法访问指定节点 getELementByID("id属性") getELementByName("Name属性值") getELementByTagName(”标签名称“) 2、使用层次关系访问节点 (算有空格) parentNode ————>返回父节点(返回的是父标签所关联的dom对象) childNodes ————>返回子节点的集合 firstChild ————>返回第一个子节点 lastChild ————>返回最后一个子节点 nextSibling ————>返回下一个节点 previousSibling ————>返回上一个节点 3、使用去掉空格节点的层次关系访问节点(忽略空格) firstElementChild ————>返回节点的第一个子节点,最普遍的用法 lastElementChild ————>是访问该元素的文本节点 nextElementSibling ————>返回节点的最后一个子节点 previousElementSibling ————>上一个节点六、节点信息
1、nodeName——-节点名称 元素节点名称———元素名称 属性节点名称———属性的名 文本节点名称———#text 文档节点名称———#document 2、nodeVale——-节点值 元素节点名称———null 属性节点名称———属性值 文本节点名称———对应的文本内容 文档节点名称——— 3、nodeType——-节点节类型 元素节点——-节点类型值1 属性节点——-节点类型值2 文本节点——-节点类型值3 注释节点——-节点类型值8 文档节点——-节点类型值9七、操作节点属性
1.取值:获取元素节点的对应属性值 getAttribute("属性名"); 2.赋值:给元素节点属性赋值 setAttribute("属性名","属性值");八、创建和插入界定
1.创建节点 createElement("标签名称"); 2.插入节点 A.appendChild(B); 在A节点中插入B节点,也就是说B节点是A节点的子节点 3.克隆节点(复制节点) 要复制的节点.cloneNode(boolean类型的值) boolean类型的值:true、false true:如果括号内是true, 则会复制当前节点以及当前节点下的所有的节点(子节点、孙节点) false:如果括号内是false 则只会复制当前节点 4.插入节点 父节点.insertBefore(A,B) 把A节点插入到B节点之前 5.删除节点 父节点.removeChild(要删除的子节点) 可以把指定节点删除 6.替换节点 父节点.replaceChild(新节点,旧节点) 可以使用新节点替换原有的节点九、操作节点样式
1、设置节点的样式 节点(对象).style属性名 = "属性值"; 2、通过类名设置节点样式 节点(对象).className = "对应的类名"; 3、获取元素样式属性值 元素节点.样式属性名; 元素节点.currentStyle.样式属性名;//兼容IE浏览器 alert(document.defaultView.getComputedStyle(元素节点,null).样式属性名);第四章
对象
一、
由相关属性和方法组成的集合体 属性:对象固有的静态的特征 方法:对象固有的动态行为特征 例子:person对象——-张三 var person1 = new Object()://数据类型是Object 属性:名字、年龄、性别、身高、体重 //对应的就是jd中的变量 person1.name = "张三"; person1.age = "18"; person1.sex = "男"; person1.height = "175"; person1.weight = "88"; 方法:吃饭、睡觉、打游戏、吸毒、嫖娼、杀人、放火、抢劫 //对应的就是js中的函数 person1.eat = function(){ alert("打卤蛋呀大卤蛋打打卤蛋")}; person1.sleep = function(){alert("杀卤蛋呀杀卤蛋")};二、创建对象
1、自定义对象
语法:var 对象名称 = new Object(); 添加属性:对象名称.属性名称 = 属性值;//对象名称[属性名称 = 属性值] 添加方法:对象名称.方法名 = function(){函数内容}; 案件:创建一个对象 属性:名字、颜色、性别 方法:吃、睡、看家 例子:var DogBro = new Object(); //属性值 DogBro.name = Dbro; DogBro.color = black; DogBro.sex = boy; //方法 DogBro.eat = function(){alert(吃了一吨狗粮)} DogBro.sleep = function(){alert(睡了一天)} DogBro.kanjia = function(){alert(没有人回家)} DogBor.showNme = functon(){alert(this.name);} 语法二:字面量方法创建自定义对象 var 对象名称 = { 属性名称1 :属性值, 属性名称2 :属性值, 方法名 = function(){}, } 2、内置对象 String(字符串类型)对象 Date(日期)对象 Array(数组)对象 Boolean(逻辑)对象 Marh(数学)对象 RegExp(正则表达式)对象 创建内置对象: var str1 = new String("云图智联!"); 有length属性、有indexOf()、replace()方法 Math三构造函数
作用:创建特订类型的对象 语法:var 对象名称 = new 构造函数名称(); 注意:this关键字的作用: 在普通函数中:代码当前调用的对象 在构造函数中:代表当前正在使用的构造函数创造的对象四、constructor属性
对象.constructor返回构造函数五、instanceof
作用:检测对象是否是某一个对象类型 语法:对象名 instanceof 对象类型 返回值是true/false六、原型对象
1、 原型属性:可以理解为公有的属性,由这个构造函数所创建的对象都拥有这些属性 2、原型方法:可以理解为公有的方法,有这个构造函数所有创造函数所创造的对象都拥有这些方法 3、原型对象: 子类继承父类的属性和方法 如何实现继承:父类对象作为子类原型对象 注意:当使用子类创建对象后,不要通过对象去改变父类属性值第五章 初始jQuery
了解jQuery
一、为什么使用jQuery而不是用javascript直接开发
1、javascript写法太复杂,用起来太麻烦 2、如果想要操作HTML页面中标签,你需要定位对应的dom对象而不同属性的浏览器或同一浏览器不同的版本产生的dom对象所具有属性有可能不同,就是同一个代码在不同浏览器上所展示的效果就会有所不同 兼容性差二、jQuery:j:JavaScript Query:快速查询
作用:快速定位和操作dom对象定位技术 1、访问和操作dom元素 2、控制页面的样式 3、对页面事件进行处理 4、扩展新的jQuery插件 5、与Ajax技术完美结合三、jQuery简介
2006年创建 2007传入中国 jQuery是目前最流行的javascript程序库,它是对Javascript对象和函数的封装 设计思想:让你写的更少,让代码的功能更多四、其它的JavaScript程序库;
BOotstrao YUI Zepto Ext......五、jQuery官网;
百度 download下载----链接另存为六、jQuery优势
体积小---只有200kb 压缩的100kb左右 强大的选择器(也是学习的重点内容) 出色的dom封装 可靠的事件处理机制 出色的浏览器兼容性 使用隐式迭代简化编程(可以连级操作) 丰富的插件支持 免费开源七、jQuery版本
开发版:功能比较全面,适合开发使用,大小280kb 发布版:去掉了不必要的功能,适合项目发布使用,大小900kb八、jQuery的使用
1、引入jQuery:<stript src="js/jquery-3.6.0.js" 2、window.onload和$(docunment).readt()的区别 onload:等HTLM页面所有内容加载完毕之后再出发事件 一个页面中只能有一个onload监听事件 ready:等dom结构绘制完毕之后会调用对应函数 一个页面中可以有多个ready 3、jQuery语法结构 $(selector).action $():工厂函数 第一个作用:将dom对象转化为jQuery对象 selector:选择器:定位需要操作的dom元素 action:方法 jQuery提供方法 val():如果括号内有内容,则表示赋值 如果括号内没有内容,则表示取值九、jQuery代码风格
1、$等价于jQuery 2、链式操作:对同一个jQuery对象进行多重操作,并且将操作结果返回给对象 3、隐世迭代:jQuery内部帮助咱们进行了循环操作选择器
一、基本选择器
id:语法--$("#id属性值")---返回值就是一个jQuery对象方法
1、val(); 如果括号内有内容,则表示赋值 如果括号内没有内容,则表示取值 2、addClass():添加类样式 语法:jQuery对象,addClass("类名"); 3、css():设置样式 一次设置一个样式属性 语法:jQuery对象.css("样式属性","属性值"); 一次设置多个样式属性 语法:jQuery对象.css({"样式属性":"属性值","样式属性":"属性值"}); 4、show():显示元素 语法:jQuery对象.show(); 5、hide():隐藏元素 语法:jQuery对象.hide();第六章
jQuery选择器
一、基本选择器
1、id 语法:var $obj = $("id属性值"); 作用:定位对应id属性的dom对象 2、标签 语法:var $obj = $("标签名称"); 作用:定位对标签的dom对象 3、类 语法:var $obj = $(".类名"); 作用:定位对应类名的dom对象 4、并集选择器 语法:var $obj = $("nune1,nune2,..."); 作用:一次可以定位多个满足条件的dom对象 5、全局选择器 语法:var $obj = $("*"); 作用:定位所有元素的dom对象层次选择器:
1、后代选择器 语法:var $obj = $("父类选择器 子类选择器"); 作用:定位所有满足条件的后代dom对象 2、子代选择器 语法:var $obj = $("父类选择器>子类选择器"); 作用:定位所有满足条件的子代dom对象(直接子代); 3、相邻兄弟选择器 语法:var $obj = $("当前元素选择器+兄弟选择器"); 作用:定位紧邻的满足条件的后一个兄弟dom对象 4、兄弟选择器 语法:var $obj = $("当前元素选择器~兄弟选择器"); 作用:定位后边的满足条件的兄弟dom对象 5、前后所有的兄弟选择器 语法: var $obj = $("当前dom选择器"); 作用: 定位满足条件的所的兄弟dom对象属性选择器:
1.[属性名] 语法:var $obj = $(标签名称[属性名]) var $obj = $("[属性名]") 作用:定位满足条件的属性名的dom对象 2.[属性名=属性值] 语法:var $obj = $(标签名称[属性名=属性值]) var $obj = $("[属性名=属性值]") 作用:定位满足条件的属性名的dom对象 3.[属性名!=属性值] 语法:var $obj = $(标签名称[属性名!=属性值]) var $obj = $("[属性名!=属性值]") 作用:定位满足条件的属性名的dom对象 4.[属性名^=属性值] 语法:var $obj = $(标签名称[属性名^=属性值]) var $obj = $("[属性名^=属性值]") 作用:定位满足条件的属性名的dom对象 5.[属性名$=属性值] 语法:var $obj = $(标签名称[属性名$=属性值]) var $obj = $("[属性名$=属性值]") 作用:定位满足条件的属性名以及以什么为结尾的属性值的dom对象 6.[属性名*=属性值] 语法:var $obj = $(标签名称[属性名*=属性值]) var $obj = $("[属性名*=属性值]") 作用:定位满足条件的属性名以及属性值包含什么的dom对象
这篇关于JavaScript笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器