![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript学习手册
全栈工程师MrL
喜欢C语言和前端
GitHub:designbyly
你所看见的一切都是我想让你看见的!
展开
-
前端之JavaScript面向对象开发(12)
1.Symbol 类型1.1.符号的基本用法 符号需要使用 Symbol()函数初始化。符号本身是原始类型,所以 typeof 操作符对符号返回 symbol。let juzi = Symbol(); console.log(typeof juzi); // symbol 调用Symbol()函数时,也可以传入一个字符串参数作为对符号的描述(description)let genericSymbol = Symbol(); let otherGenericSymbo...原创 2021-08-17 18:14:57 · 123 阅读 · 0 评论 -
前端之JavaScript面向对象开发(11)
7.String类型表示零或多个 16 位 Unicode 字符序列。let firstName = "juzi1"; let lastName = 'juzi2'; let lastName = `designbyly`字符串可以使用双引号(")、 单引号(')或反引号(`)标示.let firstName = 'xxx"; // 语法错误:开头和结尾的引号必须是同一种7.1.字符字面量备注:可以出现在字符串中的任意位置,且可以作为单个字符被解释。7.2.字符串的.原创 2021-08-16 16:54:47 · 210 阅读 · 0 评论 -
前端之JavaScript面向对象开发(10)
1.数据类型有 6 种简单数据类型(原始类型):Undefined、Null、Boolean、Number、 String 和 Symbol。Symbol(符号)是 ECMAScript 6 新增的2.typeof 操作符"undefined"表示值未定义; "boolean"表示值为布尔值; "string"表示值为字符串; "number"表示值为数值; "object"表示值为对象(而不是函数)或 null; "function"表示值为函数; "symbol"...原创 2021-08-11 18:25:58 · 145 阅读 · 0 评论 -
前端之JavaScript面向对象开发(9)
const 声明const age = 1314;age = 1314; // TypeError: 给常量赋值// const 也不允许重复声明const name = 'juzi';const name = 'juzi1'; // SyntaxError声明变量时必须同时初始化变量// const 声明的作用域也是块const name = 'juzi';if (true) { const name = 'juzi1';}console.log(name); //原创 2021-08-10 22:55:54 · 100 阅读 · 0 评论 -
前端之JavaScript面向对象开发(8)
1.let 声明let声明的范围是块作用域, 而var 声明的范围是函数作用域。if (true) { var name = 'juzi'; console.log(name); // juzi} console.log(name); // juzi 1314if (true) { let age = 1314; console.log(age); // 1314} console.log(age); // ReferenceError: age 没有定义块作用域可以原创 2021-08-09 18:13:01 · 98 阅读 · 0 评论 -
前端之JavaScript面向对象开发(7)
1.var 操作符var designbyly 定义了一个名为 designbyly的变量,不初始化的情况下,变量会保存一个特殊值 undefinedvar designbyly="juzi" designbyly 被定义为一个保存字符串值 juzi的变量。designbyly=1314520 合法,但不推荐2.var 声明作用域var 操作符定义的变量会成为包含它的函数的局部变量,function juzi() {...原创 2021-08-06 17:58:42 · 121 阅读 · 0 评论 -
前端之JavaScript面向对象开发(6)
1.关键字与保留字按照规定,保留的关键字不能用作标识符或属性名。break do in typeof case else instanceof var catch export new void class extends return while const finally super with continue for switch yield debugger function this default if throw delete import try 2.未来的保留原创 2021-08-05 17:10:01 · 96 阅读 · 0 评论 -
前端之JavaScript面向对象开发(5)
1.语言基础涉及语法、操作符、数据类型 以及内置功能,在此基础之上才可以构建复杂的解决方案ECMAScript 的语法借鉴了 C 语言和其他类 C 语言2.语法2.1.区分大小写ECMAScript 中一切都区分大小写,变量、函数名还是操作符,都区分大 小写2.2.标志符(标识符,就是变量、函数、属性或函数参数的名称)第一个字符必须是字母、下划线(_)或美元符号($) 剩下的其他字符可以是字母、下划线、美元符号或数字 _designbyly (ok)$desi原创 2021-08-04 17:22:59 · 99 阅读 · 0 评论 -
前端之JavaScript面向对象开发(4)
1.早期浏览器不支持 JavaScript 的问题采用页面优雅降级的处理方案。<noscript>元素,被用于给不支持 JavaScript 的浏览器提供替代内容。<noscript>.元素可以包含任何可以出现在中的 HTML 元素.2.浏览器显示包含在<.noscript>的情况浏览器不支持脚本 浏览器对脚本的支持被关闭在脚本不可用时让浏览器显示一段话。如果浏览器支持脚本,则用户永远不会看到它<!DOCTYPE html> &原创 2021-08-03 13:50:21 · 117 阅读 · 0 评论 -
前端之JavaScript面向对象开发(3)
一.文档模式最初的文档模式有两种混杂模式(quirks mode):让 IE 像 IE5 一样(支持一些非标准的特性),在所有浏览器中都以省略文档开头的 doctype 声明作为开关. 标准模式(standards mode):让 IE 具有兼容标准的行为二.两种模式的主要区别体现在通过 CSS 渲染的内容方面三.第三种文档模式准标准模式(almost standards mode)浏览器支持很多标准的特性,但是没有标准规定得那么严格,区别在于如何对待图片元素周围的空白准标准原创 2021-08-02 13:43:44 · 87 阅读 · 0 评论 -
前端之JavaScript面向对象开发(2)
一.行内代码与外部文件荐使用外部文件的理由可维护性。JavaScript 代码如果分散到很多 HTML 页面,会导致维护困难。而用一个目录保存 所有 JavaScript 文件,则更容易维护。 缓存。浏览器会根据特定的设置缓存所有外部链接的 JavaScript 文件,这意味着如果两个页面都 用到同一个文件,则该文件只需下载一次。 适应未来。把 JavaScript 放到外部文件中,不必考虑用 XHTML。配置浏览器请求外部文件时的重点考虑之一:它们会占用多少带宽二.SPDY/HTTP2原创 2021-07-30 13:53:32 · 113 阅读 · 0 评论 -
前端之JavaScript面向对象开发(1)
一.HTML 中的 JavaScript将 JavaScript 引入网页,解决的是与网页的主导语言 HTML 的关系问题。将 JavaScript 插入 HTML 的主要方法是:使用<script>元素(网景公司创造),最早在 Netscape Nav。后来,这个元素被正式加入到 HTML 规范igator 2 中实现的,二.<script>元素的八个属性async:可选。应该立即开始下载脚本,但不能阻止其他页面动作,只对外部脚本文件有效。 charset:可选。原创 2021-07-29 14:33:53 · 203 阅读 · 0 评论 -
ES6学习手册(13)
对象方法的扩展Object.is:判断两个值是否完全相等console.log(Object.is(110, 12))Object.assign:对象的合并(用于配置信息的合并) const config1 = { username: '小刘1号', password: "111111" } const config2 = { username: '小刘2号',原创 2021-05-12 14:20:51 · 76 阅读 · 0 评论 -
ES6学习手册(13)
数值扩展Number.EPSILON:是JavaScript表示的最小精度值:2.220446049250313e-16Number.isFinite:检测一个数值是否为有限数Number.isNan;检测一个数值是否为NaNNumber.parseInt Number.parseFloat:字符串转整数Number.isInteger:判断一个数是否为整数Math.trunc:将数字的小数部分抹掉Math.sign:判断一个数到底是正数,负数,还是零原创 2021-05-12 14:18:48 · 109 阅读 · 1 评论 -
ES6学习手册(12)
构造函数继承function Phone(brand, price) {this.brand = brandthis.price = price}Phone.prototype.call = (function() {console.log(‘打电话请给我’)}) function SmartPhone(brand, price, color, size) { Phone.call(this, brand, price) this.color = col原创 2021-05-12 14:17:15 · 88 阅读 · 0 评论 -
ES6学习手册(11)
Class(类)作为对象的模板,通过class关键字,可以定义类。class声明类constructor 定义构造函数初始化extends 继承父类super 调用父级构造方法static 定义静态方法和属性父类方法可以重写 class Phone { constructor(brand, price) { this.brand = brand this.price = pric原创 2021-05-12 14:13:07 · 92 阅读 · 0 评论 -
ES6学习手册(10)
Map类似于对象,也是键值对的集合。键的范围不再局限于字符串,各种类型的值(包括对象)都可以当做键。Map实现了interator接口,可以使用扩展运算符和let,of进行遍历属性和方法size 返回Map的元素个数set 增加一个新元素,返回当前Mapget 返回键名对象的键值has 检测Map中是否包含某个元素,返回boolean值clear 情况集合,返回undefineddelete 删除每日一句看的淡一点,伤的就会少一点。别等不该等的人,别伤不原创 2021-05-12 14:11:23 · 85 阅读 · 0 评论 -
ES6学习手册(9)
集合(set)类似于数组,但是成员值唯一,集合实现了iterator接口,所以可以使用扩展运算符和for,of进行遍历。集合属性和方法size 返回集合的元素个数add 增加一个新元素,返回当前集合delete 删除元素,返回booleanhas 检测集合中是否包含某个元素,返回boollean值。实战数组去重let arr = [1, 2, 3, 4, 5, 6, 7, 7, 7, 6, 5, 4, 8, 9, 0, 7, 6] let resu原创 2021-05-12 14:08:59 · 76 阅读 · 0 评论 -
ES6学习手册(8)
PromiseES6引入的异步编程的解决方案,Promise是一个构造函数,用来封装异步操作并可以获取其成功或者失败的结果Promise构造函数:Promise(excutor){}Promise.prototype.then方法Promise.prototype.catch方法实例化Promise对象 const p = new Promise(function(resolve, reject) { setTimeout(function() {原创 2021-05-11 16:18:28 · 99 阅读 · 1 评论 -
ES6学习手册(7)
生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同生成器一个特殊的函数异步编程 纯回调函数 node fs ajax mongodbfunction 与 xx()加星号函数代码的分隔符 yield生成器函数的参数传递next()可以传参,参数将作为上一个yield的返回结果实例异步编程:隔秒输出值 function one() { setTimeout(() => {原创 2021-05-11 16:16:51 · 96 阅读 · 1 评论 -
ES6学习手册(6)
迭代器一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署interator接口(对象里面的属性),就可以完成遍历操作。ES6创造了一种新的遍历命令for。。。of循环,iterator接口主要供for。。。of消费。原生具备iterator接口的数据(可以用for of遍历)Array,Argument,Set,Map,String,TypedArray,NodeList工作原理创建一个指针对象,指向当前数据结构的起始位置第一次调用对象的next方法,指针自原创 2021-05-11 16:14:48 · 96 阅读 · 1 评论 -
ES6学习手册(5)
扩展运算符能将 数组 转换为逗号分隔的 参数序列。。。运算符数组的合并数组的克隆(属于浅拷贝) const xx = ['E', 'G', 'M'] console.log([...xx])将伪数组转换为真数组 const divs = document.querySelectorAll('div') console.log([...divs]) //console.log(divs)ES原创 2021-05-11 16:12:51 · 81 阅读 · 1 评论 -
ES6学习手册(4)
ES6运行给函数参数赋值初始值形参初始值,具有默认值的参数,一般位置要靠后(潜规则)与解构赋值结合ES6引入rest参数,用于获取函数的实参,用来代替arguments function date(...args) { console.log(args) } date('1', '2', '3')ES5获取实参的方式 function date() { console.log(arguments)原创 2021-05-11 16:10:00 · 71 阅读 · 0 评论 -
ES6学习手册(3)
ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法 name, change, // name: name, // change: change // improve: function() { // console.log('来吧') // }, improve() {原创 2021-05-11 16:08:30 · 106 阅读 · 0 评论 -
ES6学习手册(2)
const定义常量一定要赋初始值一般常量使用大写常量的值不能修改块级作用域对应数组和对象的元素修改,不算做对常量的修改,不会报错解构赋值ES6允许按照一定模式从数组和对象中提取值,对变量进行赋值数组的结构对象的解构模板字符串可以使用反引号``内容中可以直接出现换行符变量拼接let xx = ‘xx’let xxx = ${xx}是王者...原创 2021-05-11 16:06:40 · 116 阅读 · 0 评论 -
ES6学习手册(1)
ECMA介绍https://baike.baidu.com/item/%E6%AC%A7%E6%B4%B2%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%88%B6%E9%80%A0%E5%95%86%E5%8D%8F%E4%BC%9A/2052072?fromtitle=ECMA&fromid=1499618ES6版本变动内容最多加入许多新的语法特性前端发展趋势ES6兼容性https://www.caniuse.com/?search=es6let声明变量单个原创 2021-05-11 16:05:05 · 290 阅读 · 0 评论 -
JavaScript学习手册(64)
JavaScript学习之路暂且告一段落手撕源码请等待感谢陪伴,感谢观看有问题请联系邮箱designbyly@aliyun.comgithub:designbyly每日一句最美的不是下雨天,是曾与你躲过雨的屋檐。 3、征服畏惧、建立自信的最快最确实的方法,就是去做你害怕的事,直到你获得成功的经验。...原创 2021-05-08 18:05:09 · 62 阅读 · 0 评论 -
JavaScript学习手册(63)
介绍H5线程提供了js分线程的实现,取名为:Web Workers我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面但是子线程完全受主线程控制,且不得操作DOM所以,这个新标准并没有改变JavaScript单线程的本质使用创建在分线程执行的js文件在主线程中的js中发消息并设置回调相关APIWorker:构造函数,加载分线程执行的js文件Worker.prototype.onmessage:用于接收另一个线程的回调函数Worke.prototype.po原创 2021-05-08 18:01:46 · 67 阅读 · 3 评论 -
JavaScript学习手册(62)
所有代码分类初始化执行代码(同步代码):包含绑定dom事件监听,设置定时器,发送ajax请求的代码回调执行代码(异步代码):处理回调逻辑js引擎执行代码的基本流程初始化代码==》回调函数模型的两个重要部分事件管理模块,回调队列模型的运转流程执行初始化代码,将事件回调函数交给对应模块管理当事件发生时,管理模块会将回调函数及其数据添加到回调队列中只有当初始化代码执行完后(可能要一定时间),才会遍历读取回调队列中的回调函数执行相关概念执行栈execution stack所有的代原创 2021-05-08 17:59:42 · 137 阅读 · 0 评论 -
JavaScript学习手册(61)
定时器真的是定时执行的吗?定时器并不能保证真正定时执行。一般会延迟一丁点(可以接受),也有可能延迟很长时间(不能接受)。定时器回调函数是在分线程执行的吗?在主线程执行的,js是单线程的。定时器是如何实现的?事件循环模型如何证明js执行是单线程的?setTimeout()的回调函数 是在主线程执行的。定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行。为什么js要用单线程模式,而不用多线程模式?JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,Java原创 2021-05-08 17:57:59 · 80 阅读 · 0 评论 -
JavaScript学习手册(60)
支撑浏览器运行的最核心的程序Chrome,Safari:webkitFirefox:GeckoIE:Trident360,搜狗等国内浏览器:Trident+webkit不同的浏览器可能不一样内核有很多模块组成主线程js引擎模块:负责js程序的编译与运行htnl,css文档解析模块:负责页面文本的解析DOM/CSS模块:负责dom/css在内存中的相关处理布局和渲染模块:负责页面的布局和效果的绘制(内存中的对象)分线程定时器模块:负责定时器的管理事件响应模块:负责事件的原创 2021-05-08 17:56:37 · 80 阅读 · 0 评论 -
JavaScript学习手册(59)
进程process程序的一次执行,它占有一片独有的内存空间,可以通过windows任务管理器查看进程线程thread是进程内的一个独立执行单元是程序执行的一个完整流程是CPU的最小的调度单元应用程序必须运行在某个进程的某个线程上一个进程中至少有一个运行的线程:主线程,进程启动后自动创建一个进程中也可以同时运行多个线程,我们会说程序是多线程运行的一个进程内的数据可以供其中的多个线程直接共享多个进程之间的数据是不能直接共享的线程池(thread pool):保存多个线程对象的容器,实原创 2021-05-08 17:53:03 · 64 阅读 · 1 评论 -
JavaScript学习手册(58)
继承模式原型链继承套路定义父类型构造函数给父类型的原型添加方法定义子类型的构造函数创建父类型的对象赋值给子类型的原型将子类型原型的构造属性设置为子类型给子类型原型添加方法创建子类型的对象:可以调用父类型的方法关键子类型的原型为父类型的一个实例对象//父类型function Supper(){this.supProp='Supper Property'}Supper.prototype.showSupperProp=function(){console.log(this.原创 2021-05-07 17:15:51 · 64 阅读 · 0 评论 -
JavaScript学习手册(57)
对象创建模式方式一:Object构造函数模式var p=new Object()p.name=‘ ’套路:先创建空Object对象,再动态添加属性/方法适用场景:起始时不确定对象内部数据问题:语句太多方式二:对象字面量模式var p={ name:‘ ’}套路:使用 { } 创建对象,同时指定属性/方法适用场景:起始时对象内部数据是确定的问题:如果创建多个对象,有重复代码方式三:工厂模式function create(name,age){ va原创 2021-05-07 17:13:24 · 110 阅读 · 2 评论 -
JavaScript学习手册(56)
作用域理解一块地盘,一个代码段所在区域它是静态的(相对于上下文对象),在编写代码时就确定了分类全局作用域函数作用域没有块作用域(ES6有)作用隔离变量,不同作用域下同名变量不会有冲突作用域与执行上下文的区别与联系区别1全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时。全局执行上下文环境是在全局作用域确定之后,js代码马上执行之前创建。函数执行上下文环境是在调用时,函数体代码执行之前创建。区别2作用域是静态原创 2021-05-07 17:10:32 · 1006 阅读 · 15 评论 -
JavaScript学习手册(55)
变量提升与函数提升变量提升声明通过var定义(声明)的变量,在定义语句之前就可以访问到值:undefined函数提升声明通过function声明的函数,在之前就可以调用值:函数定义(对象)问题:变量提升和函数提升是如何产生的?执行上下文代码分类(位置)全局代码函数代码全局执行上下文在执行全局代码前将window确定为全局执行上下文对全局数据进行预处理var定义的全局变量==》undefined,添加为window的属性function声明的全局函数原创 2021-05-07 17:08:58 · 702 阅读 · 0 评论 -
JavaScript学习手册(54)
instanceof是如何判断的?表达式:A instanceof BA:实例对象,B:构造函数如果B函数的显式原型对象在A对象的原型链上,返回true,否则返回falseFunction是通过new自己产生的实例每日一句生活中没有理想的人,...原创 2021-05-07 17:05:54 · 120 阅读 · 0 评论 -
JavaScript学习手册(53)
原型链访问一个对象的属性时先在自身属性中查找,找到返回,如果没有,再沿着_ proto _这条链向上查找,找到返回如果最终没有找到,返回undefined别名:隐式原型链作用:查找对象的属性(方法)构造函数,原型,实体对象的关系原型链中的属性问题读取对象的属性时:会自动到原型链中查找设置对象的属性时:不会查找原型链,如果当前对象中没有此属性,直接添加此属性并设置其值方法一般定义在原型中,属性一般通过构造函数定义在对象本身上每日一句人生路上有阻挡你梦想的砖墙,那是有原因的。原创 2021-05-07 17:04:22 · 68 阅读 · 1 评论 -
JavaScript学习手册(52)
函数的prototype属性每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为:原型对象)原型对象中有一个属性constructor,它指向函数对象给原型添加属性(一般都是方法)作用:函数的所有实例对象自动拥有原型中的属性(方法)显式原型每个函数function都有一个prototype,即显式原型(属性)隐式原型每个实例对象都有一个_ proto _,可称为隐式原型(属性)对象的隐式原型的值为其对应构造函数的显示原型的值总结函数的prototype属原创 2021-05-07 17:02:52 · 64 阅读 · 0 评论 -
JavaScript学习手册(51)
在下面2种情况下不加分号会有问题小括号开头的前一条语句中括号开头的前一条语句解决办法:在行首加括号强有力证据:vue.js库每日一句一个人只有亲眼看到自己伤疤的时候才知道什么是痛,什么是对与错。...原创 2021-05-07 17:01:27 · 79 阅读 · 0 评论