03 2022 档案

摘要:1、模板语法 Vue模板语法包括两大类 1 .插值语法 功能:用于解析标签体内容。插值语法往往用于指定标签体内容(双标签中间夹着的内容) 写法:{{xxx}} , xxx是js表达式,可以直接读取到data中的所有区域。 2 .指令语法 功能:用于解析标签(包括:标签属性、标签体内容、绑定事件…) 阅读全文
posted @ 2022-03-31 20:52 青仙 阅读(95) 评论(0) 推荐(0) 编辑
摘要:1、初识vue 前置工作(搭建vue环境和安装浏览器调试工具) ① 给浏览器安装Vue Devtools 插件 ② 引入 Vue包,vue包引入有下面两种方式: 页面引入(标签)又分为本地引入和CDN引入(script标签的src是一个在线的链接) ③ (可选)阻止vue在启动时生成生产提示 Vue 阅读全文
posted @ 2022-03-31 17:01 青仙 阅读(47) 评论(0) 推荐(0) 编辑
摘要:1、类的私有属性 在class里面用#对私有属性进行标识。类外部无法操作或者直接访问类的私有属性。 class Person{ //公有属性 name; //私有属性 #age; #weight; //构造方法 constructor(name,age,weight){ this.name=name 阅读全文
posted @ 2022-03-30 22:03 青仙 阅读(110) 评论(0) 推荐(0) 编辑
摘要:1、Object.fromEntries 这个方法用来创建一个对象,它接收一个二维数组或者map作为参数。功能是将二维数组或者Map转为对象。和es8的entries功能相反。 // //传二维数组,会把二维数组里的每个数组的第一个元素作为键,第二个元素作为值 // const result=Obj 阅读全文
posted @ 2022-03-30 18:48 青仙 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1、扩展运算符与rest参数 rest参数 Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符。 function connet({host,port,...user}){ console 阅读全文
posted @ 2022-03-30 18:17 青仙 阅读(104) 评论(0) 推荐(0) 编辑
摘要:1.async 和 await async 和 await 两种语法结合可以让异步代码像同步代码一样。 1.1.async 函数 async 函数的返回值为 promise 对象, promise 对象的结果由 async 函数执行的返回值决定 async function fn(){ ////情况 阅读全文
posted @ 2022-03-30 16:30 青仙 阅读(79) 评论(0) 推荐(0) 编辑
摘要:1、Array.prototype.includes Includes 方法用来检测数组中是否包含某个元素,返回布尔类型值。 const arr=["小明","小张","小李"]; console.log(arr.includes("小明")); 2、指数操作符 在 ES7 中引入指数运算符**,用 阅读全文
posted @ 2022-03-30 15:36 青仙 阅读(114) 评论(0) 推荐(0) 编辑
摘要:1、模块化 模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来。 1.1、模块化的好处 模块化的优势有以下几点: 防止命名冲突 代码复用 高维护性 1.2、模块化规范产品 ES6之前js是没有模块化的,都是用别的规范来实现对项目的代码进行拆分。ES6 之前的模块化规范有: Com 阅读全文
posted @ 2022-03-30 10:56 青仙 阅读(354) 评论(0) 推荐(0) 编辑
摘要:ES6 新增了一些 Object 对象的方法 1) Object.is 比较两个值是否严格相等 2) Object.assign 对象的合并,将源对象的所有可枚举属性,复制到目标对象。 两个对象不相同的属性不会覆盖,相同的属性后面对象会把前面对象相同的属性覆盖。 如: const config1={ 阅读全文
posted @ 2022-03-30 10:35 青仙 阅读(21) 评论(0) 推荐(0) 编辑
摘要:Number.EPSILON Number.EPSILON 是 JavaScript 表示的最小精度。 EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16 如: function equal(a, b){ if(Math.abs(a-b) < 阅读全文
posted @ 2022-03-30 10:20 青仙 阅读(22) 评论(0) 推荐(0) 编辑
摘要:class ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的 阅读全文
posted @ 2022-03-29 21:41 青仙 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Map ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map 也实现了iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。Map 的属性和方法: ize 返回 Map 的元素个数 se 阅读全文
posted @ 2022-03-29 21:23 青仙 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Set ES6 提供了新的数据结构 Set(集合),它也是对象。它类似于数组,但成员的值都是唯一的,集合实现了 iterator 接口,所以可以使用『扩展运算符』和『for…of…』进行遍历,集合的属性和方法: size 返回集合的元素个数 add 增加一个新元素,返回当前集合 delete 删除元 阅读全文
posted @ 2022-03-29 20:49 青仙 阅读(39) 评论(0) 推荐(0) 编辑
摘要:Object.keys()的使用方法及数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,非常好用。和for...in方法功能类似,但有使用区别! 数组遍历可以用for()或forEach()来实现,forEach()方法是ECMAScript5定义的遍历数组 阅读全文
posted @ 2022-03-29 10:13 青仙 阅读(422) 评论(0) 推荐(0) 编辑
摘要:JS中的bind的实现以及使用 bind函数:更改函数的this指向。该方法返回一个新的函数,这个函数里的this就是你指的的对象。 function fun(){} let newf=fun.bind(obj); newf();//此时调用函数这个函数里的this就指向obj对象了。 在讨论bin 阅读全文
posted @ 2022-03-29 10:05 青仙 阅读(307) 评论(0) 推荐(0) 编辑
摘要:1. 自己创建一个API 1.1 API 的分类 通过链接请求访问服务端进行增删改查等待操作就是api。webApi就是单纯的没有页面,只是一个用来接收请求的后台服务器,根据用户(浏览器)发送的请求进行不同的操作。 REST API: restful (Representational State 阅读全文
posted @ 2022-03-28 11:13 青仙 阅读(260) 评论(0) 推荐(0) 编辑
摘要:async 函数 1. 函数的返回值为 promise 对象 2. promise 对象的结果由 async 函数执行的返回值决定 返回结果的方式和then方法差不多 async function say(){ ////1,如果返回值是一个非Promise类型的数据,那这个方法返回的就是一个成功状态 阅读全文
posted @ 2022-03-25 19:52 青仙 阅读(70) 评论(0) 推荐(0) 编辑
摘要:1. 整体结构框架 /** * 自定义Promise函数模块:IIFE */ (function (window) { const PENDING = 'pending' const RESOLVED = 'fulfilled' const REJECTED = 'rejected' /** * P 阅读全文
posted @ 2022-03-24 21:00 青仙 阅读(98) 评论(0) 推荐(0) 编辑
摘要:3. Promise 的几个关键问题 1. 如何改变 promise 的状态? (1)resolve(value):如果当前是 pending 就会变为 resolved (2)reject(reason):如果当前是 pending 就会变为 rejected (3)抛出异常:如果当前是 pend 阅读全文
posted @ 2022-03-24 10:01 青仙 阅读(33) 评论(0) 推荐(0) 编辑
摘要:1. 预备知识 1.1 实例对象与函数对象 实例对象:new 函数产生的对象,称为实例对象,简称为对象 函数对象:将函数作为对象使用时,称为函数对象 function Fn() { // Fn只能称为函数 } const fn = new Fn() // Fn只有new过的才可以称为构造函数 //f 阅读全文
posted @ 2022-03-23 10:34 青仙 阅读(80) 评论(0) 推荐(0) 编辑
摘要:fs中提供了四种读取文件的方式 – 同步文件读取 – 异步文件读取 – 简单文件读取 – 流式文件读取 同步文件读取 fs.readSync 异步文件读取 fs.read 简单文件读取 同步的简单文件读取 fs.readFileSync(path[, options])//同步的简单文件读取,有返回 阅读全文
posted @ 2022-03-22 21:27 青仙 阅读(428) 评论(0) 推荐(0) 编辑
摘要:写入文件 fs中提供了四种不同的方式将数据写入文件 – 同步文件写入 – 异步文件写入 – 简单文件写入 – 流式文件写入 同步文件写入 //1,引入文件模块 let fs=require("fs"); //2,打开文件 let result=fs.openSync("test.txt","w"); 阅读全文
posted @ 2022-03-22 20:38 青仙 阅读(690) 评论(0) 推荐(0) 编辑
摘要:fs(文件系统File System) 在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端。文件系统简单来说就是通过node来操作系统中的文件。 Node通过fs模块来和文件系统进行交互。 该模块提供了一些标准文件访问API来打开、读取、写入文件,以及与其交互。 阅读全文
posted @ 2022-03-22 18:10 青仙 阅读(719) 评论(0) 推荐(0) 编辑
摘要:buffer缓冲区: buffer的结构和数组很像,操作的方法也和数组类似。 数组中不能存二进制的文件,而buffer就是专门用来存储二进制的数据。 使用buffer不需要引入模块,直接使用即可。 在buffer中存储的都是二进制数据,但是在显示时都是以16进制显示的。(gbk编码下1个汉字占两个字 阅读全文
posted @ 2022-03-22 16:58 青仙 阅读(133) 评论(0) 推荐(0) 编辑
摘要:NPM(Node Package Manager) CommonJS包规范是理论,NPM是其中一种实践。 对于Node而言,NPM帮助其完成了"第三方模块"的发布、安装和依赖等。借助NPM,Node与第三方模块之间形成了很好的一个生态系统。 npm等于说相当于一个node包管理平台,你可以将你的模块 阅读全文
posted @ 2022-03-21 18:33 青仙 阅读(306) 评论(0) 推荐(0) 编辑
摘要:包 将你的js模块放在一个文件夹里,这就是一个包了。所以包就是你的js模块文件和一个描述文件package.jsonj就构成一个包了。 CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。(增强的模块) CommonJS的包规范由包结构和包描述文件两个部分组成。 包结构: 阅读全文
posted @ 2022-03-21 10:51 青仙 阅读(71) 评论(0) 推荐(0) 编辑
摘要:模块化简介 ES5中没有原生支持模块化,我们只能通过script标签引入js文件来实现模块化。在node中为了对模块管理,引入了CommonJS规范。 COMMONJS规范 ECMAScript(ES5)标准的缺陷 没有模块系统 标准库较少 没有标准接口 缺乏管理系统 模块化 说白了就是将代码进行拆 阅读全文
posted @ 2022-03-20 19:22 青仙 阅读(75) 评论(0) 推荐(0) 编辑
摘要:Node.js简介 Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 Node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。 Node大部分基本模块都用Jav 阅读全文
posted @ 2022-03-20 17:55 青仙 阅读(176) 评论(0) 推荐(0) 编辑
摘要:1.命令行窗口(也叫:小黑屏、CMD窗口、终端、shell、命令提示符) 打开: 开始菜单 --> 运行 --> CMD --> 回车 在cmd里按上方向箭头可以快速使用上一次命令,按tab键可以快速补齐文件名,按esc可以清除当前命令行,输入cls可以清屏。 常用的指令: dir 列出当前目录下的 阅读全文
posted @ 2022-03-20 16:58 青仙 阅读(248) 评论(0) 推荐(0) 编辑
摘要:1. Ajax概述 1.1 AJAX 简介 AJAX 全称为Asynchronous JavaScript And XML,就是异步的JS 和XML。 通过AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方 阅读全文
posted @ 2022-03-18 12:04 青仙 阅读(82) 评论(0) 推荐(0) 编辑
摘要:介绍 Promise 是 ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。 1、 Promise 构造函数: Promise (excutor) {} 2、 Promise.prototype.then 方法 3、 Promi 阅读全文
posted @ 2022-03-18 09:52 青仙 阅读(22) 评论(0) 推荐(0) 编辑
摘要:生成器 生成器函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 异步编程:比如:文件操作、网络操作(ajax,request)、数据库操作。 如: function * gen(){ console.log("hello"); } //调用 let iterator=gen( 阅读全文
posted @ 2022-03-17 19:31 青仙 阅读(102) 评论(0) 推荐(0) 编辑
摘要:介绍 遍历器(Iterator)就是一种机制。它是一种接口(接口在js里面就是对象的属性),为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。 作用:自定义遍历数据。 1) ES6 创造了一种新的遍历命令 for...of 循环,Iterato 阅读全文
posted @ 2022-03-17 16:56 青仙 阅读(145) 评论(0) 推荐(0) 编辑
摘要:介绍 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型。 特点 1)Symbol 的值是唯一的,用来解决命名冲突的问题 2)Symbol 值不能与其他数据进行运算 3)Symbol 定义 的 对象属 性 阅读全文
posted @ 2022-03-17 11:50 青仙 阅读(51) 评论(0) 推荐(0) 编辑
摘要:Es6 引入rest参数,用于获取函数的实参,用来代替arguments rest参数用三个点(...)表示 function data(...param){ console.log(param);//rest返回的是一个数组 } data(5,6,"小明",{name:"小李",age:18}); 阅读全文
posted @ 2022-03-17 10:58 青仙 阅读(51) 评论(0) 推荐(0) 编辑
摘要:Es6 允许给函数参数设置初始值 1,形参初始值(具有默认值的参数),一般要靠后(潜规则) function add(a,b,c=10){ return a+b+c; } console.log(add(1,2));//不穿第三个参数就用方法默认的初始值。 2,与解构赋值结合 function co 阅读全文
posted @ 2022-03-17 10:52 青仙 阅读(106) 评论(0) 推荐(0) 编辑
摘要:ES6允许使用箭头(=>)定义函数。 如: let fn=(a,b)=>{ return a+b; } console.log(fn(2,3)); 特点: 1、this是静态的,this始终指向函数声明(定义)时所在作用域下的this的值。 比如在全局作用域先定义连个函数,一个使用箭头函数定义。 上 阅读全文
posted @ 2022-03-16 20:52 青仙 阅读(138) 评论(0) 推荐(0) 编辑
摘要:ES6允许在大括号内,直接写入变量和函数,作为对象的属性和方法。 let name="张三"; let fun=function(){ console.log("hello world"); } const P1={ name, fun, newfun(){ console.log('新方法'); 阅读全文
posted @ 2022-03-16 19:11 青仙 阅读(44) 评论(0) 推荐(0) 编辑
摘要:es6引入新声明字符串的方式 特点1 内容中可以直接出现换行符 let str=`hello world`; 特点2 变量拼接 let a1="小明"; console.log(`我叫${a1}`); 阅读全文
posted @ 2022-03-16 19:00 青仙 阅读(62) 评论(0) 推荐(0) 编辑
摘要:ES6允许 按照一定模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。 1、数组解构 //1、数组解构 const F4=['张三','李四','王五','赵六']; let [a1,a2,a3,a4]=F4;//相当于声明了四个变量 console.log(a1,a2,a3,a4); 2 阅读全文
posted @ 2022-03-16 18:35 青仙 阅读(30) 评论(0) 推荐(0) 编辑
摘要:常量 就是值不会改变。一般常量名都是大写,这是潜规则。 特点 ①定义的时候要赋初始值,不然会报错。 const SCHOOL="尚硅谷"; ②常量值不能修改 SCHOOL="a";//报错 ③常量具有块级作用域 { const PLARY="uzi"; } console.log(PLARY);// 阅读全文
posted @ 2022-03-16 18:15 青仙 阅读(30) 评论(0) 推荐(0) 编辑
摘要:声明方式 和var一样,如:let a="hello"; 特点 ①变量不能重复声明 就是在一个作用域中不能同时声明同一个变量名的两个变量。 let start="aaa"; let start=2; ②let是块级作用域,ES6里面if和循环等的花括号里都是块级作用域。 { let gril="女孩 阅读全文
posted @ 2022-03-16 17:47 青仙 阅读(55) 评论(0) 推荐(0) 编辑
摘要:1、vue是什么? js框架。 2、vue特点 ①采用组件化模块,提高代码复用率,且让代码更好维护。 组件化模块就是建一个页面的内容分为几个部分,每个部分都是自己的js和css和html(也就是.vue结尾的文件)。 ②声明式编码,让编码人员不用直接操作DOM,提高开发效率。 比如:由一个数据,要展 阅读全文
posted @ 2022-03-16 16:03 青仙 阅读(671) 评论(0) 推荐(0) 编辑
摘要:如果主线程做回调运算那么页面会无法操作 如,点击计算后,如果数值过大,可能要等待很久。 点击之后,js引擎主线程在不断的运算,而界面在js主线程运算的时候操作不了,因为递归效率比较低,所以响应你界面操作的主线程还在后面计算中,它没有时间响应你,所以界面就卡住了。如果要给用户好的体验,要把主线程操作的 阅读全文
posted @ 2022-03-16 10:37 青仙 阅读(105) 评论(0) 推荐(0) 编辑
摘要:1、所有代码分类 初始化代码(同步代码):包含绑定dom事件监听,设置定时器,发送 ajax请求的代码。 回调执行代码(异步代码):处理回调逻辑。 2、js引擎执行代码的基本流程: 初始化代码 >回调代码 3,模型的2个重要组成部分: ①、事件管理模块(包括定时器管理模块/DOM事件管理模块/Aja 阅读全文
posted @ 2022-03-16 09:11 青仙 阅读(116) 评论(0) 推荐(0) 编辑
摘要:1、如何证明js执行时单线程的? setitmeout()的回调函数是在主线程执行的。 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行。 2、为什么js要用单线程模式,而不用多线程 javascript的单线程,于它的用途有关。 作为浏览器脚本语言,javascript的主要用途是与用户 阅读全文
posted @ 2022-03-15 18:58 青仙 阅读(89) 评论(0) 推荐(0) 编辑
摘要:1、定时器真是定时执行的吗? 定时器并不能保证真正定时执行。 一般会延迟一丁点(可以接受),也有可能延迟很长时间(不能接收) 2,定时器回调函数是在分线程(异步)执行的吗? 在主线程执行的,js是单线程。 3,定时器是如何实现的? 事件循环模型。 阅读全文
posted @ 2022-03-15 18:02 青仙 阅读(37) 评论(0) 推荐(0) 编辑
摘要:浏览器内核 支撑浏览器运行的最核心的程序。(浏览器也是程序,也是用代码写的,内核就是一些比较底层的代码。) 不同的浏览器的内核可能不一样。比如:chrome用的内核叫:webkit,IE用的叫Trident。 内核有很多模块组成 阅读全文
posted @ 2022-03-15 17:47 青仙 阅读(107) 评论(0) 推荐(0) 编辑
摘要:进程: 程序的一次执行,它占有一片独立的内存空间。 可以任务管理器查看所有进程。 线程 是进程内的一个独立执行单位。 是程序执行的一个完整流程。 是cpu的最小调度单位。 何为多进程与多线程? 多进程运行 :一应用程序可以同时启动多个实例运行。 多线程:在一个进程内,同时有多个线程运行。 相关知识 阅读全文
posted @ 2022-03-15 16:54 青仙 阅读(124) 评论(0) 推荐(0) 编辑
摘要:实现继承方式 方式一:原型链继承 套路: 1,定义父类型构造函数。 2,给父类型的原型添加方法。 3,定义子类型的构造函数。 4,创建父类型的对象赋值给子类型的原型。 5,将子类原型的构造属性设置为子类型。 6,给子类型原型添加方法 7,创建子类型的对象:可以调用父类型的方法 关键: 子类型的原型为 阅读全文
posted @ 2022-03-15 11:47 青仙 阅读(59) 评论(0) 推荐(0) 编辑
摘要:方式一:object构造函数模式 套路:先创建空object对象,再动态添加属性/方法。 使用场景:起始时不确定对象内部的数据。 缺点:语句太多。 var person=new Object(); person.name='tom'; person.age=18; person.setName=fu 阅读全文
posted @ 2022-03-15 11:09 青仙 阅读(42) 评论(0) 推荐(0) 编辑
摘要:1 这题没有产生闭包 var name="The Window"; var obj={ name:"My Object", getNameFunc:function(){ return function(){ return this.name; } } } alert( obj.getNameFun 阅读全文
posted @ 2022-03-15 10:08 青仙 阅读(351) 评论(0) 推荐(0) 编辑
摘要:闭包的缺点和解决 缺点: 函数执行完成后,函数内的局部变量没有释放,占用内存时间会变长。 容易造成内存泄漏。 解决: 1、能不用闭包就不用。 2、及时释放。 内存溢出 一种程序运行出现的错误。 当程序运行需要的内存超过了剩余的内存时,就会抛出内存溢出的错误。 内存泄漏 占用的内存没有及时释放。 内存 阅读全文
posted @ 2022-03-15 09:12 青仙 阅读(384) 评论(0) 推荐(0) 编辑
摘要:闭包的应用:定义js模块。 js模块: 就是一个私有的函数内部封装一些功能和数据。函数里的这些数据和方法是私有的,外面不可见,除非暴露出去。 将所有的数据和功能都封装在一个函数内部(私有的)。 只向外暴露一个包含n个方法的对象或函数。 模块的使用者只需要通过模块暴露的对象来调用方法来实现功能。 自己 阅读全文
posted @ 2022-03-14 20:35 青仙 阅读(228) 评论(0) 推荐(0) 编辑
摘要:产生: 在嵌套内部函数定义执行完成时就产生了(不是调用闭包函数),但一定是外部函数被调用才能执行函数定义,才会产生闭包的空间,外部函数一旦被调用,就有函数内部的变量提升和函数提升。 死亡: 在嵌套的内部函数成为垃圾对象时。 阅读全文
posted @ 2022-03-14 18:22 青仙 阅读(105) 评论(0) 推荐(0) 编辑
摘要:作用: 1、 使用函数内部的变量在函数执行完后,仍然存活在内存中(延长了局部变量的生命周期) 2、 让函数外部可以操作(读写)到函数内部的数据(变量/函数) 扩展 1、函数执行完后,函数内部声明的局部变量是否还存在? 一般是存在,存在于闭包中的变量才可能存在。 2、在函数外部能直接访问函数内部的局部 阅读全文
posted @ 2022-03-14 18:09 青仙 阅读(37) 评论(0) 推荐(0) 编辑
摘要:将函数作为另一个函数的返回值 function fn1(){ var a=2; function fn2(){//执行函数定义就会产生闭包,执行函数定义不是指调用函数。 a++; console.log(a); } return fn2; } var f=fn1(); f();//3 f();//4 阅读全文
posted @ 2022-03-14 17:43 青仙 阅读(83) 评论(0) 推荐(0) 编辑
摘要:1,如何产生闭包? 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量时,就产生了闭包。 2,闭包到底是什么? 使用chrom调试查看 理解一:闭包是嵌套的内部函数 理解二:包含引用变量(函数)的对象 注意:闭包存在于嵌套的内部函数中 3,产生闭包的条件 函数嵌套 内部函数引用了外部函数的数 阅读全文
posted @ 2022-03-14 16:59 青仙 阅读(40) 评论(0) 推荐(0) 编辑
摘要:js循环绑定事件 在编写JS代码的时候,我们经常会遇到要对一系列元素进行事件绑定的情况,然后就会理所当然的开一个for循环,对元素的事件进行赋值等操作,最后运行的效果却不是希望有的样子,事件的响应只能和最后一个元素一样。 html元:希望给每个按钮都绑定单击事件,输出他们是第几个按钮 <body> 阅读全文
posted @ 2022-03-14 16:24 青仙 阅读(308) 评论(0) 推荐(0) 编辑
摘要:作用域 理解 *就是一块地段,一个代码段所在的区域。 *它是静态的(相对于上下文对象),在编写代码时就确定了。 分类: 全局作用域 函数作用域 块作用域(ES6) 作用: 隔离变量,不同作用域下的同名变量不会有冲突。 var a=10,b=20; function fn(x){ var a=100, 阅读全文
posted @ 2022-03-14 11:40 青仙 阅读(28) 评论(0) 推荐(0) 编辑
摘要:函数执行分类: 执行函数定义 只是定义了一个函数,但是并没有执行函数体,只是创建了一个函数对象。内部代码相当于this.prototype={},创建一个空的原型对象(空的object对象)。 执行函数 也就是调用函数,函数名加括号。 函数原型 严格来说,函数也是一个实例(对象),是Function 阅读全文
posted @ 2022-03-14 10:14 青仙 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1 console.log('global begin:'+i); var i=1; foo(1); function foo(i){ if(i==4) return; console.log('foo() begin:'+i); foo(i+1); console.log('foo() end:' 阅读全文
posted @ 2022-03-14 08:54 青仙 阅读(84) 评论(0) 推荐(0) 编辑
摘要:执行上下文栈 就是用来存全局上下文对象和函数上下文对象的栈容器。 在全局代码执行之前,js引擎就会创建一个栈容器来存储管理所有的执行上下文对象。 在全局执行上下文(window)确定后,将其添加到栈中(压栈)。 在函数执行上下文创建后,将其添加到栈中压栈)。 在当前函数执行完后,将栈顶的对象移除(出 阅读全文
posted @ 2022-03-13 20:44 青仙 阅读(48) 评论(0) 推荐(0) 编辑
摘要:1、代码分类(位置) 全局代码 函数(局部)代码 2、全局执行上下文对象 ①在执行全局代码前将window确定为全局执行上下文对象(全局执行上下文对象每次执行js代码只存着一个) ②对全局数据进行预处理 *var定义的全局变量 = =>undefind,添加为window的属性。 *function 阅读全文
posted @ 2022-03-13 16:59 青仙 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1,变量声明提升 通过var定义的变量,在定义语句之前就可以被访问到。 变量的值:undefind 如: console.log(b);//结果undefind var b=1; 或者: var a=3; function fn(){ console.log(a); var a=2; } fn(); 阅读全文
posted @ 2022-03-13 16:06 青仙 阅读(33) 评论(0) 推荐(0) 编辑
摘要:面试题1 实例的__proto__属性是实例被创建时赋予的,这个属性指向的是实例被创建时构造函数的prototype对象 function A(){ } A.prototype.n=1; var b=new A(); A.prototype={ n:2, m:3 } var c=new A(); c 阅读全文
posted @ 2022-03-13 15:47 青仙 阅读(233) 评论(0) 推荐(0) 编辑
摘要:instanceof a instanceof A 作用:判断左边这个对象a(实例或属性)是不是右边这个类型(构造函数)A的实例,左边一般是对象的属性或对象的实例,右边一般是构造函数或对象,主要是通过左边的实例的隐式原型属性一直往原型链中找,一直都是通过原型对象的隐式原型属性往原型链中找,右边也通过 阅读全文
posted @ 2022-03-13 10:59 青仙 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1 通过实例读取对象或构造函数的属性值时:如果在该实例内部没找到,会自动通过实例本身的隐式原型属性_proto_属性去原型链中去找。 实例对象的隐式原型属性等于该对象的构造函数的显式原型属性。 2 设置对象的属性值时:不会查找原型链,如果当前对象实例中没有此属性,直接添加此属性并设置其值。 3 方法 阅读全文
posted @ 2022-03-13 10:47 青仙 阅读(55) 评论(0) 推荐(0) 编辑
摘要:1. 原型链(图解) *访问一个对象的属性时, *先在自身属性中查找,找到返回 *如果没有, 再沿着 _proto__这条链向上查找, 找到则返回 *如果最终没找到, 返回undefined *别名: 隐式原型链 *作用: 查找对象的属性(方法) 2. 构造函数/原型/实体对象的关系(图解) 一来系 阅读全文
posted @ 2022-03-13 09:43 青仙 阅读(23) 评论(0) 推荐(0) 编辑
摘要:1 每个函数function都有一个prototype,即显示原型(属性) 2 每个实例对象都有一个 proto_,可称为隐式原型(属性) 3 对象(实例)的隐式原型的值为其对应构造函数的显示原型的值,即他们都指向同一个对象 4 内存结构(如图) //定义构造函数 function Fun(){// 阅读全文
posted @ 2022-03-13 09:39 青仙 阅读(290) 评论(0) 推荐(0) 编辑
摘要:函数的prototype属性 *① 每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为:原型对象),比如我们新建了一个函数,没有向函数的原型对象中添加属性和方法时,这个prototype指向的Object空对象里就没有我们的属性。 console.log(Date.pr 阅读全文
posted @ 2022-03-13 09:07 青仙 阅读(83) 评论(0) 推荐(0) 编辑
摘要:this是什么? *任何函数本质上都是通过某个对象来调用的,如果没有直接指定this那么this就是window对象。 *所有函数内部都有一个变量this,它的值是调用该函数的当前对象。 *一般异步任务的this是wondow,因为是定时器模块最后交给js引擎(window)调用的。箭头函数写法除外 阅读全文
posted @ 2022-03-13 08:55 青仙 阅读(40) 评论(0) 推荐(0) 编辑
摘要:IIFE 全称:Immediately-Invoked Function Expression(立即执行(调用)函数表达式,也称匿名函数自调用) 作用: *隐藏实现(全局作用域不可访问其内部的方法或变量,除非故意暴露出去) *不会污染外部(全局)命名空间 (function () { //匿名函数自 阅读全文
posted @ 2022-03-13 08:35 青仙 阅读(28) 评论(0) 推荐(0) 编辑
摘要:1 什么是回调函数? *你定义的 *不用你调用 *但是最终它会被执行(在某个时刻某个条件的情况下) 2 常见的回调函数? ①dom事件回调函数=>发生事件的dom元素调用 document.getElementById(‘btn’).onclick = function () { // dom事件回 阅读全文
posted @ 2022-03-13 08:27 青仙 阅读(29) 评论(0) 推荐(0) 编辑
摘要:1 什么是函数? *实现特定功能的n条语句的封装体 *只有函数是可以执行的,其它类型的数据不能执行。 2 为什么要用函数? *提高代码复用 *便于交流阅读 3 如何定义函数? *函数声明 function fn1 () { //函数声明 console.log(‘fn1()’) } *表达式 var 阅读全文
posted @ 2022-03-13 08:25 青仙 阅读(22) 评论(0) 推荐(0) 编辑
摘要:1 什么是对象 多个数据的封装体,或者说用来保存多个数据的容器,一个对象代表现实中的一个事物 2 为什么要用对象 统一管理多个数据 3 对象的组成 属性:有属性名(字符串)和属性值(任意数据类型)组成 方法:一种特别的属性(属性值是函数) 4 如何访问对象内部数据 ①.属性名:编码简单,有时不能用, 阅读全文
posted @ 2022-03-12 18:43 青仙 阅读(24) 评论(0) 推荐(0) 编辑
摘要:问题:关于赋值和内存的问题 var a = xxx, a内存中到底保存的是什么? ①xxx是基本类型的数据,保存的就是这个数据 ②xxx是对象,保存的是对象的地址值(内存地址) ③xxx是一个变量,保存的该变量对应的内存中的数据(可能是基本类型的数据,也可能是地址值) 问题:关于引用变量赋值的问题 阅读全文
posted @ 2022-03-12 18:41 青仙 阅读(140) 评论(0) 推荐(0) 编辑
摘要:1 什么是数据 存储在内存中代表特定信息的东西,就是对事物的描述,本质上是二进制。 数据的特点:可传递,可运算。 内存中所有操作的目标:数据 算术运算 逻辑运算 赋值 运算函数 2 什么是内存 内存条通电以后产生的可存储数据的空间(临时的) 内存产生和死亡:内存条(电路板)=>通电=>产生内存空间= 阅读全文
posted @ 2022-03-12 18:36 青仙 阅读(40) 评论(0) 推荐(0) 编辑
摘要:1 undefined与null的区别 undefined代表定义未赋值 null代表定义并赋值了,只是值为null 2 什么时候给变量赋值为null ①初始赋值,表明将要赋值为对象。 ②结束前,让对象成为垃圾对象(被垃圾回收器回收) 3 严格区分数据类型和变量类型 ①数据类型 —-基本类型 —-对 阅读全文
posted @ 2022-03-12 18:35 青仙 阅读(17) 评论(0) 推荐(0) 编辑
摘要:1分类 基本(值)类型 String:任意字符串 Number:任意数字 Boolean:true/false Null:null Undefined:undefined 对象(引用)类型 Object:任意的对象(一般对象内部数据无序) Function:一种特别的对象(可以执行) Array:一 阅读全文
posted @ 2022-03-12 18:27 青仙 阅读(40) 评论(0) 推荐(0) 编辑
摘要:JSON js中的对象只有js自己能认识,其它的语言都不认识。 JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,并且可以转换为任意语言中的对象,JSON在开发中主要用来在不同语言之间的数据的交互。 —-JavaScript Object Notation(JSON):JS对象表示 阅读全文
posted @ 2022-03-12 18:23 青仙 阅读(44) 评论(0) 推荐(0) 编辑
摘要:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>二级菜单</title> <style type="text/css"> * { margin: 0; padding: 0; list-style-type: none; } a 阅读全文
posted @ 2022-03-12 18:18 青仙 阅读(35) 评论(0) 推荐(0) 编辑
摘要:样式与行为混合 通过style属性来修改元素的样式,每修改一个样式 ,浏览器就需要重新渲染一次页面 这样的执行的性能是比较差的,而且这种形式当我们要 修改多个样式时,也不太方便。 而且,css是样式,js是行为,这样的操作就是行为和表现混合了,在开发中尽量少用。 解决思路 我们可以通过修改元素的cl 阅读全文
posted @ 2022-03-12 18:15 青仙 阅读(105) 评论(0) 推荐(0) 编辑
摘要:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } /* * 设置outer的样式 */ #outer{ /* 阅读全文
posted @ 2022-03-12 18:13 青仙 阅读(73) 评论(0) 推荐(0) 编辑
摘要:应用1 点击按钮以后,box持续向右边移动,到800px时停下。 <html> <head> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; } #box1{ width: 100px; height: 阅读全文
posted @ 2022-03-12 18:11 青仙 阅读(37) 评论(0) 推荐(0) 编辑
摘要:延时调用setTimeout() 延时调用一个函数不会马上执行,而是隔一段时间以后再执行,而且只会执行一次。 延时调用和定时调用的区别,定时调用会执行多次,而延时调用只会执行一次。 使用clearTimeout();来关闭一个延时调用。 延时调用和定时调用实际上是可以相互替代的,在开发中可以根据自己 阅读全文
posted @ 2022-03-12 18:09 青仙 阅读(393) 评论(0) 推荐(0) 编辑
摘要:第一个练习自动切换图片 <html> <head> <meta charset="UTF-8"> <title></title> <style> #img1{ width:200px; height: 200px; } </style> <script> //图片路径的数组 var imgs=["i 阅读全文
posted @ 2022-03-12 18:08 青仙 阅读(127) 评论(0) 推荐(0) 编辑
摘要:js的程序执行速度是非常非常快的,如果希望一段程序,可以每间隔一段时间执行一次,可以使用定时调用。 setInterval() 定时调用,可以将一个函数,每隔一段时间执行一次。 参数: 1、回调函数,该函数会每隔一段时间被调用一次。 2、每次调用间隔的时间,单位是毫秒。 返回值: 返回一个Numbe 阅读全文
posted @ 2022-03-12 18:04 青仙 阅读(76) 评论(0) 推荐(0) 编辑
摘要:Location —-代表当前浏览器的地址栏信息,通过Location可以获取地址栏的信息,或者操作浏览器跳转页面。 如果直接打印location,则可以获取到地址栏的信息(当前页面的完整的路径)。 alert(location); 如果直接将location属性修改为一个完整的路径,或相对路径,则 阅读全文
posted @ 2022-03-12 18:02 青仙 阅读(44) 评论(0) 推荐(0) 编辑
摘要:History —-代表浏览器的历史纪录,可以通过该对象来操作浏览器的历史纪录,由于隐私原因,该对象不能获取到具体的历史纪录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效。 length 属性:可以获取到当前访问的链接数量。 用法:history.length back() 方法:可以 阅读全文
posted @ 2022-03-12 17:58 青仙 阅读(53) 评论(0) 推荐(0) 编辑
摘要:判断是什么浏览器 Navigator代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器。由于历史原因,Navigator中的大部分属性都已经不能帮助我们识别浏览器了,一般我们只会使用userAgent属性来判断浏览器的信息,userAgent是一个字符串,这个字符串包含有用来描述浏览器信息的内 阅读全文
posted @ 2022-03-12 17:54 青仙 阅读(36) 评论(0) 推荐(0) 编辑
摘要:BOM 浏览器对象模型 —-BOM可以使我们通过js来操作浏览器。 —-在BOM中为我们提供了一组对象,用来完成对浏览器的操作。 这一组对象就是BOM的对象。 Window对象 —-代表的是整个浏览器的窗口,同时window也是网页中的全局对象。 2、Navigator —-代表的当前浏览器的信息, 阅读全文
posted @ 2022-03-12 17:47 青仙 阅读(41) 评论(0) 推荐(0) 编辑
摘要:onkeydown —-按键被按下 对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发。 当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,只会就会非常的快触发,这种设计是为了防止误操作的发生。 可以通过keycode来获取按键的编码,通过它可以判断哪个按键被按 阅读全文
posted @ 2022-03-12 17:45 青仙 阅读(430) 评论(0) 推荐(0) 编辑
摘要:onmousewheel 鼠标滚轮滚动的事件,会在滚轮滚动时触发,但是火狐不支持该属性。 在火狐中需要使用DOMMouseScroll来绑定滚动事件,注意该事件需要通过addEventListener()函数来绑定 wheelDelta 该属性可以获取鼠标滚动的方向,向上滚值为120,向下滚值为-1 阅读全文
posted @ 2022-03-12 17:42 青仙 阅读(827) 评论(0) 推荐(0) 编辑
摘要:<html> <head> <meta charset="UTF-8"> <title></title> <style> #box1{ width: 150px; height: 150px; background-color: aqua; position: absolute; } #box2{ 阅读全文
posted @ 2022-03-12 17:39 青仙 阅读(51) 评论(0) 推荐(0) 编辑
摘要:事件的传播 —-关于事件的传播网景公司和微软公司有不同的理解。 —-微软公司认为事件应该是由内向外传播,也就是当事件触发时,也该先触发当前元素上的事件,然后再向当前元素的祖先元素上传播,也就是事件应该在冒泡阶段进行。 —-网景公司认为事件应该是由外向内传播的,也就是当事件触发时,应当先触发当前元素的 阅读全文
posted @ 2022-03-12 17:35 青仙 阅读(120) 评论(0) 推荐(0) 编辑
摘要:事件的绑定 使用 对象.事件=响应函数 这种形式绑定响应函数,它只能同时为一个元素的一个事件绑定一个响应函数,不能绑定多个,如果绑定了多个,则后边的会覆盖掉前边的。 addEventListener() 通过这个方法也可以为元素绑定响应函数。 参数: 1,事件的字符串(名称),不要on。 2,回调函 阅读全文
posted @ 2022-03-12 17:16 青仙 阅读(90) 评论(0) 推荐(0) 编辑
摘要:事件的委派 —-指将事件统一绑定给元素的共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。 —-事件的委派是利用了冒泡,通过委派可以减少事件的绑定的次数,提高程序的性能。 target event(事件对象)中的target表示的是触发事件的元 阅读全文
posted @ 2022-03-12 17:10 青仙 阅读(115) 评论(0) 推荐(0) 编辑
摘要:事件的冒泡(Bubble) 所谓的冒泡指的是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发。在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡。 —-取消冒泡,可以将事件对象的cancelBubble设置为true,即可取消冒泡。比如:ev 阅读全文
posted @ 2022-03-12 17:06 青仙 阅读(484) 评论(0) 推荐(0) 编辑
摘要:要使用js修改某个元素的偏移量来使其移动,必须要为该元素设置定位,一般都将其设置为绝对定位。 pageX和pageY 可以获取鼠标相对于当前页面的坐标。整个document文档的大小,而不是根据当前可见窗口大小来获取坐标。但是这两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用。 练习 < 阅读全文
posted @ 2022-03-12 11:47 青仙 阅读(121) 评论(0) 推荐(0) 编辑
摘要:事件对象 —-当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数中。 —-在事件对象中封装了当前事件相关的一切信息。比如:鼠标的坐标,键盘哪个按键被按下、鼠标滚轮滚动的方向。。。 事件对象.clientX可以获取鼠标指针的水平坐标。(获取鼠标在当前可见的窗口的坐标), 获取 阅读全文
posted @ 2022-03-12 11:46 青仙 阅读(75) 评论(0) 推荐(0) 编辑
摘要:clientHeight clientWidth 这两个属性可以获取元素的可见宽度和高度。 这些属性返回的都是不带单位(px)的,返回的都是一个数字,可以直接进行计算, 会获取元素的宽度和高度,包括内容区和内边距,但是除开边框。 这些属性都是只读的,不能修改。 offsetHeight offset 阅读全文
posted @ 2022-03-12 11:43 青仙 阅读(44) 评论(0) 推荐(0) 编辑
摘要:获取元素的样式currentStyle 就是获取元素的当前显示的样式,如果要获取到元素没有设置该样式,则获取它的默认值,比如说,当前元素没有设置background-color样式,你用这个属性获取的就是默认值:transparent(透明的)。 它和style的区别就是它可以获取元素当前正在使用的 阅读全文
posted @ 2022-03-12 11:37 青仙 阅读(551) 评论(0) 推荐(0) 编辑
摘要:通过JS修改元素的内联样式 语法:元素.style.样式名=样式值; 在使用js改变css样式时,如果Css样式名中含有-(减号),需要将这种样式名修改为驼峰命名法,去掉-,然后将-号后面的字母大写。 比如: 在写样式时,background-color: red; 使用js修改样式时,div.st 阅读全文
posted @ 2022-03-12 11:36 青仙 阅读(135) 评论(0) 推荐(0) 编辑
摘要:取消超链接的默认行为 点击超链接后,超链接会跳转页面,这个是超链接的默认行为,但是此时我们不希望出现默认行为,可以通过在响应函数的最后return false来取消默认行为。 比如: window.onload=function(){ //获取a标签 var mya=document.getElem 阅读全文
posted @ 2022-03-12 11:33 青仙 阅读(88) 评论(0) 推荐(0) 编辑
摘要:DOM相关操作 使用innertHtml也可以完成DOM相关操作,不过它是把全部内容删了重新加载的,动静太大,一般结合DOM相关操作的方式同时使用。 document.createElement() 可以用于创建一个元素节点对象,它需要一个标签名作为参数,将会根据该标签名创建元素节点对象,并将创建好 阅读全文
posted @ 2022-03-12 11:30 青仙 阅读(64) 评论(0) 推荐(0) 编辑
摘要:获取body标签 var mybody=document.getElementsByTagName("body")[0]; console.log(mybody); //或者下面这种方法 //var mybody=document.body; //console.log(mybody); 在docu 阅读全文
posted @ 2022-03-12 11:27 青仙 阅读(65) 评论(0) 推荐(0) 编辑
摘要:<html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> window.onload=function(){ //定义一个单击响应函数 var myClick=function(nod 阅读全文
posted @ 2022-03-12 11:22 青仙 阅读(20) 评论(0) 推荐(0) 编辑
摘要:<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } #outer{ width: 550px; margi 阅读全文
posted @ 2022-03-12 11:21 青仙 阅读(30) 评论(0) 推荐(0) 编辑
摘要:获取元素节点 通过document对象调用 getElementById() –—通过id属性获取一个元素节点对象 getElementsByTagName() –—通过标签名获取一组元素节点对象,这个方法给我们返回一个类数组对象,所有查询到的元素都会封装到类数组对象(arguments)中,即使查 阅读全文
posted @ 2022-03-12 11:19 青仙 阅读(126) 评论(0) 推荐(0) 编辑
摘要:浏览器在加载一个页面时,是按照自上而下的顺序加载的,读取到一行就运行一行,如果将script标签(js代码)写到页面上面,在代码执行时,页面还没有加载,页面没有加载DOM对象也没有加载,会导致无法获取到DOM对象 比如: <head> <meta charset="UTF-8"> <title></ 阅读全文
posted @ 2022-03-12 11:13 青仙 阅读(130) 评论(0) 推荐(0) 编辑
摘要:事件 事件,就是文档和浏览器窗口之间发生的一些特定的交互瞬间(交互行为)。 比如:点击按钮、鼠标移动、关闭窗口。。。。 我们可以在事件对应的属性中设置一些JS代码,这样当事件被触发时,这些代码将会被执行。 比如: <button id="btn1" onclick="alert('触发了单击事件!' 阅读全文
posted @ 2022-03-12 11:10 青仙 阅读(47) 评论(0) 推荐(0) 编辑
摘要:什么是DOM DOM,全称是Document Object Model ,文档对象模型。 JS中通过DOM来对HTML文档进行操作。只要理解了DOM就可以随心所欲的操作WEB页面。 文档 —-表示的是整个HTML网页文档 对象 —-对象表示将网页中的每一个部分都转换为了一个对象。 模型 —-使用模型 阅读全文
posted @ 2022-03-12 11:03 青仙 阅读(248) 评论(0) 推荐(0) 编辑
摘要:创建一个正则表达式,检查一个字符串中是否含有aaa var reg=/a{3}/; console.log(reg.test("aaabc")); 量词 —-通过量词可以设置一个内容出现的次数。 —-量词只对它前面的一个字符起作用,如果想要它前面的一坨内容起作用,就要将它前面的那一坨加个括号括起来, 阅读全文
posted @ 2022-03-12 10:59 青仙 阅读(39) 评论(0) 推荐(0) 编辑
摘要:使用字面量来创建正则表达式 语法:var 变量=/正则表达式/匹配模式 比如: var reg=/a/i; var result=reg.test('A'); console.log(result); 创建一个正则表达式检查一个字符串中是否有a或b 使用|表示或的意思 var reg=/a|b/i; 阅读全文
posted @ 2022-03-12 10:54 青仙 阅读(45) 评论(0) 推荐(0) 编辑
摘要:split():可以将一个字符串拆分为一个数组 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串。 这个方法即使不指定全局匹配,也会全部拆分。 比如:根据任意字母来拆分字符串。 var str="1a2b3c4d5e6f7"; var result=str.split(/ 阅读全文
posted @ 2022-03-12 10:52 青仙 阅读(126) 评论(0) 推荐(0) 编辑
摘要:正则表达式 —-正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。 创建正则表达式的对象 语法:var 变量=new RegExp(‘正则表达式’,’匹配模式’); 使用typeof检查正则表达式对象,会返回Object 阅读全文
posted @ 2022-03-12 10:50 青仙 阅读(31) 评论(0) 推荐(0) 编辑
摘要:在底层字符串是以字符数组的形式保存的 比如: var str=”hello”; 在底层以数组的形式存储。 [‘h’,’e’,’l’,’l’,’o’] length属性 和数组类似,可以用来获取字符串的长度 var str=”hello”; console.log(str.length);//输出结果 阅读全文
posted @ 2022-03-12 10:49 青仙 阅读(70) 评论(0) 推荐(0) 编辑
摘要:基本数据类型 String Number Boolean Null Undefined 引用数据类型 Object 在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象 String() —-可以将基本数据类型字符串转换为String对象 Number() —-可以将基 阅读全文
posted @ 2022-03-12 10:41 青仙 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Math —-Math和其它的对象不同,它不是一个构造函数; 它属于一个工具类,工具类:不用创建对象,它里面封装了数学运算相关的属性和方法 —-比如: Math.PI 表示圆周率 abs():可以用来计算一个数的绝对值 var a=-1; console.log(Math.abs(a)); 输出结果 阅读全文
posted @ 2022-03-12 10:38 青仙 阅读(107) 评论(0) 推荐(0) 编辑
摘要:创建一个Date对象 —-如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间 var d=new Date(); console.log(d); 上面输出结果就是当前系统的时间 创建一个指定的时间对象 需要在构造函数中传递一个表示时间的字符串作为参数 日期的格式 :月份/日/年 阅读全文
posted @ 2022-03-12 10:32 青仙 阅读(36) 评论(0) 推荐(0) 编辑
摘要:在调用函数时,浏览器每次都会传递进两个隐含的参数: 1,函数的上下文对象this。 2、封装实参的对象arguments —-arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度, —-在调用函数时,我们所传递的实参都会封装到arguments中 —-arguments.l 阅读全文
posted @ 2022-03-12 10:25 青仙 阅读(130) 评论(0) 推荐(0) 编辑
摘要:—-这两个方法都是函数对象的方法,需要通过函数对象来调用 —-当对函数调用call()和apply()都会调用函数执行。 比如: fun.call(); fun.apply(); fun(); 以上三种效果一致。 —-在调用call()和apply()可以将一个对象指定为第一个参数,此时这个对象将会 阅读全文
posted @ 2022-03-12 10:14 青仙 阅读(110) 评论(0) 推荐(0) 编辑
摘要:slice() —-可以通过索引来从数组中提取指定元素 —-该方法不会改变元素数组,而是将截取到的元素封装到一个新的数组中返回。 —参数 1(必须):截取开始的位置的索引,包含开始索引。 2(可选):截取结束的位置的索引,不包含结束索引。不写该参数则会截取从开始到最后的所有元素。 索引可以传一个负值 阅读全文
posted @ 2022-03-12 10:05 青仙 阅读(64) 评论(0) 推荐(0) 编辑
摘要:forEach 一般我们都是使用for循环去遍历数组,JS中还为我们提供了一个方法,用来循环遍历数组。 forEach() —这个方法只支持IE8以上的浏览器, IE8以下的浏览器均不支持该方法,所以如果需要兼容IE8,则不要使用forEach,还是使用for循环来遍历。如果在IE8以下使用会报错。 阅读全文
posted @ 2022-03-12 10:02 青仙 阅读(1092) 评论(0) 推荐(0) 编辑
摘要:所谓的遍历数组,就是将数组中所有的元素都取出来 var arr=['孙悟空','猪八戒','沙悟净']; //所谓的遍历数组,就是将数组中所有的元素都取出来 for (var i=0;i<arr.length;i++) { console.log(arr[i]); } 输出结果: 阅读全文
posted @ 2022-03-12 10:01 青仙 阅读(34) 评论(0) 推荐(0) 编辑
摘要:push() —-该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度。 —-可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾。 —-该方法会将数组新的长度作为返回值返回。 比如: var arr=['孙悟空','猪八戒','沙悟净']; console.log(a 阅读全文
posted @ 2022-03-12 10:00 青仙 阅读(32) 评论(0) 推荐(0) 编辑
摘要:使用字面量来创建数组 语法:[]; //创建数组对象 var arr=[]; console.log(typeof arr); 使用字面量创建数组时,可以在创建时就指定数组中的元素 //创建数组对象 var arr=[10,20,30,40]; console.log(arr); 使用构造函数创建数 阅读全文
posted @ 2022-03-12 09:56 青仙 阅读(100) 评论(0) 推荐(0) 编辑
摘要:数组(Array) —-数组也是一个对象 —-它和我们普通对象功能相似,也是用来存储一些值的 —-不同的是普通对象是使用字符串作为属性名的,而数组是使用数字来作为索引来操作元素的。 —-索引: 从0开始的整数就是索引。 —-数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据。 实际 阅读全文
posted @ 2022-03-12 09:50 青仙 阅读(40) 评论(0) 推荐(0) 编辑
摘要:垃圾回收(GC) 就像人生活的时间长了会产生垃圾一样,程序运行过程中也会产生垃圾, 这些垃圾积攒过多以后,会导致程序运行的速度过慢,所以我们需要一个垃圾回收的机制,来处理程序运行时产生的垃圾 当一个对象没有任何的变量或属性对它进行引用,此时我们将永远无法操作该对象,此时这种对象就是一个垃圾,这种对象 阅读全文
posted @ 2022-03-12 09:49 青仙 阅读(79) 评论(0) 推荐(0) 编辑
摘要:当我们直接在一个页面里打印一个对象时,实际上是输出对象的toString()方法的放回值。(自带的浏览器) <script> //创建一个构造函数 function Person(name,age,gender){ this.name=name; this.age=age; this.gender= 阅读全文
posted @ 2022-03-12 09:47 青仙 阅读(218) 评论(0) 推荐(0) 编辑
摘要:找对象自己的属性 使用in检查对象中是否有某个属性时,如果对象中没有但是原型中有,也会返回true; 可以使用hasOwnProperty()方法来检查对象自身中是否含有该属性 <script> //创建一个构造函数 function MyClass(){ } //向MyClass原型对象中添加一个 阅读全文
posted @ 2022-03-12 09:30 青仙 阅读(24) 评论(0) 推荐(0) 编辑
摘要:将saynaem在全局作用域里定义 将函数定义在全局作用域,污染了全局作用域的命名空间,而且定义在全局作用域也很不安全, <script> function Person(naem,age,gender){ this.name=naem; this.age=age; this.gender=gend 阅读全文
posted @ 2022-03-12 09:20 青仙 阅读(75) 评论(0) 推荐(0) 编辑
摘要:创建一个Person构造函数 —-在Person构造函数中,为每一个对象都添加了一个sayname方法,目前我们的方法是在构造函数内部创建的,也就是构造函数每执行一次就会创建一个新的sayname方法,也就是所有的实例的sayname方法都是唯一的。这样就导致了构造函数执行一次就会创建一个新方法,比 阅读全文
posted @ 2022-03-12 09:09 青仙 阅读(254) 评论(0) 推荐(0) 编辑
摘要:创建一个构造函数 js的构造函数就相当于C#中的类,只是ES5之前js没有类class这个用法,都用构造函数模拟类。 创建一个构造函数,专门用来创建Person对象的。 构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写。 构造函数和普通函数的区别就是调用方式的 阅读全文
posted @ 2022-03-12 09:04 青仙 阅读(99) 评论(0) 推荐(0) 编辑
摘要:使用工厂方法创建对象 使用该方法可以批量创建对象 <script> function createperson(name,age,gender){ var obj=new Object(); obj.name=name; obj.age=age; obj.gender=gender; return 阅读全文
posted @ 2022-03-12 08:58 青仙 阅读(28) 评论(0) 推荐(0) 编辑
摘要:—-解析器(浏览器)在调用函数每次都会向函数内部传递进一个隐含的参数 这个参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象。 1,以函数方式调用时,this永远都是指向window。 2,以方法的形式调用时,this就 阅读全文
posted @ 2022-03-12 08:52 青仙 阅读(34) 评论(0) 推荐(0) 编辑
摘要:作用域 作用域指一个变量的作用的范围 在js中一共有两种作用域: 1.全局作用域 —-直接编写在script标签中的js代码,都在全局作用域。 全局作用域在页面打开时创建,在页面关闭时销毁。 —-在全局作用域中有一个全局对象window,我们可以直接使用,它代表的是一个浏览器的窗口,它由浏览器创建, 阅读全文
posted @ 2022-03-12 08:39 青仙 阅读(284) 评论(0) 推荐(0) 编辑
摘要:枚举对象中的属性 使用for…in 语句 语法:for(var 变量 in 对象){ } for…in 语句 :对象中有几个属性,循环体就会执行几次。每次执行时,会将对象中的一个属性的名字赋值给变量。 var obj={ name:"孙悟空", gender:'男', hobby:'乒乓球', ag 阅读全文
posted @ 2022-03-12 08:24 青仙 阅读(71) 评论(0) 推荐(0) 编辑
摘要:立即执行函数(函数自调用) 函数定义完,立即被调用,这种函数叫做立即执行函数,立即执行函数往往只执行一次 一般函数调用语法:函数对象(); 而匿名函数(立即执行函数)调用语法如下: (function(){ alert('我是一个匿名函数'); })() 传参如下: (function(a,b){ 阅读全文
posted @ 2022-03-12 08:22 青仙 阅读(138) 评论(0) 推荐(0) 编辑
摘要:return 可以使用return来设置函数的返回值 语法:return 值; 函数如果有返回值需要定义一个变量(容器)来接收,在函数中return后面的语句不会被执行。 如果return 语句后不跟任何值就相当于返回一个undefined,如果函数中不写return,则也返回undefined r 阅读全文
posted @ 2022-03-12 08:20 青仙 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:可以在函数的()中来指定一个或多个形参(形式参数),多个形式参数之间用逗号(,)隔开,声明形式参数就相当于在函数内部声明了对应的变量,但是并没有赋值。 在调用函数时,可以在()中指定实参(实际参数),实参将会赋值给函数中对应的形参。调用函数时解析器(浏览器)不会检查实参的类型,所以要注意,是否有可能 阅读全文
posted @ 2022-03-12 08:10 青仙 阅读(141) 评论(0) 推荐(0) 编辑
摘要:函数function —函数也是一个对象。 —函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)。 —函数中可以保存一些代码在需要的时候调用。 —使用typeof检查一个函数对象时,会返回一个function 比如: var fun=new Function(); console.lo 阅读全文
posted @ 2022-03-12 08:04 青仙 阅读(25) 评论(0) 推荐(0) 编辑
摘要:使用对象字面量创建对象 语法:var obj={}; 使用这种方式和使用new Object();这种方式本质上没有区别 var obj={}; obj.name='孙悟空'; console.log(obj.name);//结果为"孙悟空" 使用对象字面量,可以在创建对象时,直接指定对象中的属性 阅读全文
posted @ 2022-03-11 20:41 青仙 阅读(93) 评论(0) 推荐(0) 编辑
摘要:基本数据类型 Number、String、Null、Boolean、Undefined 引用数据类型 Object 变量都是保存在栈内存中的 JS中的变量都是保存在栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间是独立存在的,修改一个变量的值不会影响到其它变量的值。 比如: var a=1 阅读全文
posted @ 2022-03-11 20:38 青仙 阅读(119) 评论(0) 推荐(0) 编辑
摘要:对象的属性名 对象的属性名不强制要求遵守标识符的规范 什么乱七八糟的名字都可以用,但是我们使用时还是尽量按照标志符的规范去做。 如果要使用特殊的属性名,不能采用.的方式来操作,需要使用另一种方式来操作。 格式:对象[“属性名”]=属性值; obj[“123”]=789; console.log(ob 阅读全文
posted @ 2022-03-11 20:26 青仙 阅读(302) 评论(0) 推荐(0) 编辑
摘要:创建对象 使用new关键字调用的函数,是构造函数constructor 构造函数是专门用来创建对象的函数 格式: var obj=new Object(); 向对象中添加属性 在对象中保存的值称为属性 格式: 对象.属性名=属性值; //向对象中添加name属性 obj.name=”孙悟空”; // 阅读全文
posted @ 2022-03-11 20:18 青仙 阅读(121) 评论(0) 推荐(0) 编辑
摘要:对象 对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。 对象的分类 1、内建对象 -由ES标准中定义的对象,在任何的ES的实现中都可以使用 -比如:Math String Number Boolean Function Object Date… 2、宿主对象 -由JS的运行环境提 阅读全文
posted @ 2022-03-11 20:16 青仙 阅读(34) 评论(0) 推荐(0) 编辑
摘要:break关键字 break关键字可以用来退出switch或循环语句,他会立即终止离他最近的那个循环,只能用于switch和循环语句里,不能在if语句里使用break和continue,但是如果if语句嵌套在循环语句里则可以使用break,因为break是对外面循环作用了。比如: for(var i 阅读全文
posted @ 2022-03-11 20:14 青仙 阅读(127) 评论(0) 推荐(0) 编辑
摘要:for语句 也是一个循环语句,称为for循环。 在for循环中,为我们提供了专门的位置用来存放三个表达式; 1、初始化表达式 2、条件表达式 3、更新表达式 语法 for(初始化表达式;条件表达式;更新表达式){ 语句; } for循环执行流程 ①执行初始化表达式,初始化变量(初始化表达式只执行一次 阅读全文
posted @ 2022-03-11 20:12 青仙 阅读(81) 评论(0) 推荐(0) 编辑
摘要:循环语句 通过循环语句可以反复的执行一段代码多次 while循环语法 while(条件表达式){ 语句; }//大括号里的代码块又叫循环体 执行流程 先对条件表达式进行判断,如果值为true,则执行循环体,循环体执行完毕后,继续对表达式进行判断,如果为true,则继续执行循环体,直到不满足条件时结束 阅读全文
posted @ 2022-03-11 20:11 青仙 阅读(264) 评论(0) 推荐(0) 编辑
摘要:条件分支语句 条件分支语句也叫switch语句 语法 switch(条件表达式){ case 表达式: 语句; break; case 表达式: 语句; break; default: 语句; breake; } 执行流程 在执行时会依次将case后面的表达式的值和switch后的条件表达式的值进行 阅读全文
posted @ 2022-03-11 20:09 青仙 阅读(141) 评论(0) 推荐(0) 编辑
摘要:流程控制语句 JS中的程序是从上往下一条一条的执行的,通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行。 语句的分类 1、条件判断语句。 2、条件分支语句。 3、循环语句。 条件判断语句 使用条件判断语句可以在执行某个语句之前进行判断。 如果条件成立才会执行语句,条件不成立则 阅读全文
posted @ 2022-03-11 20:05 青仙 阅读(664) 评论(0) 推荐(0) 编辑
摘要:什么是语句 我们的程序是由一条条语句构成的,语句是按照自上而下的顺序一条条执行的。 在js中可以使用{ }来为语句进行分组,同一个{ }中的语句我们称为是一组语句,它要么都执行,要么都不执行,一个{ }中的语句我们也称为一个代码块。在代码块后面就不用写;分号了。 JS中的代码块只具有分组的作用,没有 阅读全文
posted @ 2022-03-11 20:02 青仙 阅读(247) 评论(0) 推荐(0) 编辑
摘要:在字符串中使用转义字符输出Unicode编码(是16进制的) \u四位编码 比如: console.log(“\ul2620”); 在网页中使用Unicode编码(是10进制的) &#编码; 比如: 《h1>&#9760;</h1》 阅读全文
posted @ 2022-03-11 20:01 青仙 阅读(462) 评论(0) 推荐(0) 编辑
摘要:逗号运算符 使用逗号可以分割多个语句,一般可以在声明多个变量时使用。 比如: var a=1,b=2,c=3; js中运算符优先级 就和数学中一样,在js中也有优先级,比如:先乘除,后加减。 比如: var result=1+2*3;//结果为7; 与和或的优先级 var result=1 || 2 阅读全文
posted @ 2022-03-11 19:59 青仙 阅读(183) 评论(0) 推荐(0) 编辑
摘要:条件运算符 条件运算符也称三元运算符(三目运算) 语法: 条件表达式?语句1:语句2; 执行流程: 条件运算符在执行时,首先对条件表达式进行求值。如果该值为true,则执行语句1,并返回执行结果。否则执行语句2,并返回执行结果。 比如: true?alert(‘语1’):alert(‘语句2’);/ 阅读全文
posted @ 2022-03-11 19:56 青仙 阅读(234) 评论(0) 推荐(0) 编辑
摘要:相等运算符 用来比较两个值是否相等,如果相等会返回true,否则返回false。 使用==来做相等运算 当使用==来比较两个值是否相等的时候,如果两个值的类型不同,则会自动进行类型转换,将其转换为相同的类型(大部分情况都会转换为数值),然后在比较。 比如: console.log(“1”==1);/ 阅读全文
posted @ 2022-03-11 19:53 青仙 阅读(243) 评论(0) 推荐(0) 编辑
摘要:关系运算符 通过关系运算符可以比较两个值之间的大小关系。 如果关系成立它会返回true,如果关系不成立则返回false。 >大于号 判断符号左侧的值是否大于右侧的 如果关系成立,就返回true,否则返回false >=大于或等于 判断符号左侧的值是否大于或等于右侧的 如果关系成立,就返回true,否 阅读全文
posted @ 2022-03-11 19:50 青仙 阅读(74) 评论(0) 推荐(0) 编辑
摘要:= 可以将符号右边的值赋值给符号左边的变量 += a+=5等价于a=a+5; -= a-=5等价于a=a-5; *= a*=5等价于a=a*5; /= a/=5等价于a=a/5; %= a%=5等价于a=a%5; 阅读全文
posted @ 2022-03-11 19:47 青仙 阅读(51) 评论(0) 推荐(0) 编辑
摘要:逻辑运算符 !非 !可以用来对一个值进行非运算。 所谓非运算就是对一个布尔值进行取反操作。 如果对非布尔值进行运算,则会将其转换成布尔值,然后再取反。 比如: var b=10;b=!!b;console.log(“b=”+b);//结果为true var b=0;b=!!b;console.log 阅读全文
posted @ 2022-03-11 19:42 青仙 阅读(82) 评论(0) 推荐(0) 编辑
摘要:自增++ 通过自增可以使变量在自身得基础上增加1。 对于一个变量自增后,原变量的值会立即自增1。不用给自己重新赋值。 自增分两种: 后++(a++)和前++(++a); 无论是a++还是++a,都会立即使原变量的值自增1; 不同的是a++和++a的值不同。 a++的值等于原变量的值(自增前的值), 阅读全文
posted @ 2022-03-11 19:26 青仙 阅读(332) 评论(0) 推荐(0) 编辑
摘要:一元运算符 只需要一个操作数。比如:+a、 -a; 对于非Number类型的数值:它会将其先转换为Number类型,然后再运算。 可以对一个其它的数据类型使用+,来将其转换为Number类型,这是隐式类型转换。 比如:var a=”123”;a=+a;现在a就是Number类型而不是String类型 阅读全文
posted @ 2022-03-11 19:21 青仙 阅读(72) 评论(0) 推荐(0) 编辑
摘要:运算符也叫操作符 通过运算符可以对一个或多个值进行运算,并获取运算结果。 比如:typeof就是运算符,可以获得一个值的类型,它会将该值的类型以字符串的形式返回。 算数运算符 当对非Number类型的值进行运算时,会将这些值转换成Number然后再运算(加法有特殊情况)。 比如:var a=true 阅读全文
posted @ 2022-03-11 19:19 青仙 阅读(30) 评论(0) 推荐(0) 编辑
摘要:在js中,如果需要表示16进制的数字,则需要以0x开头 比如:var a=0x10,或者a=0xff 如果需要表示8进制的数字,则需要以0开头 比如:var a=050,或者a=020 如果要表示2进制数字,则需要以0b开头,但不是所有的浏览器都支持 parseInt(a,10); 表示将a转成10 阅读全文
posted @ 2022-03-11 18:34 青仙 阅读(89) 评论(0) 推荐(0) 编辑
摘要:强制类型转换 指将一个数据类型强制转换为其它的数据类型 类型转换主要是将其它的数据类型转换为:String、Number、Boolean [ ] 将其它的数据类型转为String ①方式1 调用被转数据类型的toString()方法。 该方法不会影响到原变量的类型,因为它会将转换的结果返回,只有通过 阅读全文
posted @ 2022-03-11 18:33 青仙 阅读(522) 评论(0) 推荐(0) 编辑
摘要:数据类型 数据类型指的就是字面量的类型。 在js中一共有六种数据类型 String 字符串 Number 数值 Boolean 布尔值 Null 空值 Undefined 未定义 Object对象 其中String、Number、Boolean、Null、Undefined属于基本数据类型 而Obj 阅读全文
posted @ 2022-03-11 17:47 青仙 阅读(290) 评论(0) 推荐(0) 编辑
摘要:js概念 一个完整的js实现应该由以下三个部分组成: ECMAScript:是JavaScript的标准(ES) DOM:文档对象模型 BOM:浏览器对象模型 [ ] js基础 输出语句: alert();提示框 document:文档,网页就是一个文档。 document.Write();向文档( 阅读全文
posted @ 2022-03-11 17:34 青仙 阅读(161) 评论(0) 推荐(0) 编辑
摘要:闭包 1、单例属性 function Person(){ var name="ace"; var age=18; return function(){ var birthday=2002; console.log(`name is:${name},age is: ${age++},birthday 阅读全文
posted @ 2022-03-11 11:23 青仙 阅读(67) 评论(0) 推荐(0) 编辑
摘要:原型继承 就是让类的prototype属性指向某个对象,这样该类的实例就能用它指向的那个对象的所有属性和方法。和C#的类继承差不多,子类可以用父类成员,只是js继承方法不一样,原型继承也是js中的一种继承方式 prototype就是原型,所有对象和类都有原型。如果是 function这种形式的类它的 阅读全文
posted @ 2022-03-10 19:30 青仙 阅读(158) 评论(0) 推荐(0) 编辑
摘要:Es5之前的js版本没有class这个用法,都是用function来当作类。 所以Es6就有两种类的声明方法,一是function,二是class关键字,两者在继承方面写法不一致。 声明一个类和方法 方法不需要加function关键字,直接写方法名即可 class Person{ run(){ co 阅读全文
posted @ 2022-03-10 16:45 青仙 阅读(380) 评论(0) 推荐(0) 编辑
摘要:map map就类似于C#中的键值对(Dictionary) 创建map var map=new Map(); map.set("key1","value1"); map.set("key2","value2"); map.set("key3","value3"); 输出全部值 无法通过forin输 阅读全文
posted @ 2022-03-10 11:41 青仙 阅读(67) 评论(0) 推荐(0) 编辑
摘要:es6中的扩展运算符用三个点表示 "..." 类似于C#中的prams关键字,也就是可变参数列表 1、当作方法参数使用 function Add(...array){ var sum=0; for(let i=0;i<array.length;i++){ sum+=array[i]; } retur 阅读全文
posted @ 2022-03-10 11:14 青仙 阅读(31) 评论(0) 推荐(0) 编辑
摘要:数组常用方法 filter 这个方法用来查找数组里的元素,返回的也是数组,类似C#中集合的FindAll方法 ES6以前要查找数组的元素 var newarray=[]; var array=["fhzm","ace","trao"]; for(var i=0;i<array.length;i++) 阅读全文
posted @ 2022-03-09 21:09 青仙 阅读(127) 评论(0) 推荐(0) 编辑
摘要:ES6就是js的一个版本 let和var 相同点都是可以接收任意类型 如: var str="aaaa"; console.log(str); let str1=[username ="张三",age=18]; console.log(str1); 不同点 ①var有变量提前声明,let没有 var 阅读全文
posted @ 2022-03-09 18:05 青仙 阅读(42) 评论(0) 推荐(0) 编辑
摘要:前后端分离 像MVC并不是前后端分类,因为一个项目里包括控制器和模型和视图,前端后端在一起的。 但是,真正的前端和后端应该分开。如下图: 在VSCode里运行前端 在js里访问api获取数据 在VS里运行后端API 将api项目运行起来,给前端访问 api项目解决跨域问题,不然在VSCode里运行的 阅读全文
posted @ 2022-03-08 19:10 青仙 阅读(222) 评论(0) 推荐(0) 编辑
摘要:多线程 多个线程之间不会等待,就像ajax那样,代码从上往下执行,不会等待线程执行完了才执行下一行。 Thread基本使用 使用1、 button按钮单击事件里面写代码 Thread thread = new Thread(ThreadInvork); thread.Start(); ThreadI 阅读全文
posted @ 2022-03-07 17:57 青仙 阅读(91) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示