ES5
文章平均质量分 68
ES5
Stephy_Yy
此人很懒,还是写了点什么
展开
-
JSON基础与数据解析、JSON方法、AJAX初识
JSONJavaScript Object Notation js对象标记是对象,是轻量级数据交互的格式,不能有方法映射用:隔开并列数据用,隔开映射的集合用{}包裹键名一定要用双引号(单引号是会报错的)并列数据集合用[]包裹所有编程语言都离不开的三大数据类型scalar 变量 → 字符串和数字sequence 序列 → 数组和列表 list arraymapping 映射 → 键值对 键名:键值XML数据文档大、不易读、解析比较复杂微信公众号开发XML举例:服务器与服务器原创 2021-05-27 07:41:12 · 105 阅读 · 1 评论 -
ES5 every/some/reduce/reduceRight的使用与重写
被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。break、return用于终止循环的区别:return只能用在函数体内(单独一个for循环里直接用return会报错)对于多层循环:return直接终止,而break只是跳出所在层的循环everyreturn后的表达式为条件如有一不满足条件就停止遍历返回值是布尔值可以改变this指向重写function myEvery(callback) { var arr = this,.原创 2021-05-29 16:33:09 · 132 阅读 · 0 评论 -
ES5 数组扩展方法 forEach/filter/map的使用与重写
ES3 splice slice join sort (IE5、IE6)数组扩展方法 ES5(在ES3的基础上增加、修正)forEach可能会改变原数组(直接操作了arr[i],没有使用深拷贝)参数1:回调函数(如果不使用箭头函数,则内部this指向window)参数2:用来改变参数1内部的this指向,和call一样,null/undefined指向window,原始值会被包装data.forEach(function (ele, index, array) { this[i.原创 2021-05-29 14:08:33 · 157 阅读 · 0 评论 -
ES5-20 复习
3-1变量单一声明方式String Boolean undefined Number nullundefined == nulltypeof(null) ‘object’typeof(方法) ‘function’typeof(+) +是运算符,不是数据类型 报错+0 === -0 true+Infinity == -Infinity falseNaN和谁都不等原始值没有属性 要打印属性、调用方法得经过基本包装类包装了还没有就没办法了,比如length属性Boolean、Number原创 2021-05-23 18:04:30 · 121 阅读 · 0 评论 -
ES5-19 变量声命周期、垃圾回收原理、arguments
变量声明周期垃圾回收找出不再使用的变量释放其占用内存固定的时间间隔运行解除由于闭包产生的对fn AO的引用标记清除排除全局变量、排除闭包引用的AO中的变量进入环境 → 离开环境常用引用计数引用计数为0时清除对循环引用的情况,如果不手动接触引用(a = null),则无法清除arguments属性函数内部对应参数值的实参列表类数组对象 Array-like有属性callee,指向它的宿主函数属性Symbol(Symbol.iterator) 表示可迭代c原创 2021-05-23 08:00:56 · 108 阅读 · 0 评论 -
ES5-17/18 错误信息、try_catch、严格模式
错误信息语法错误标识符名称(变量、函数名)不规范对关键字赋值基本语法错误,如分号打错引用错误变量、函数未声明给无法赋值的对象赋值var a = 1 = 2范围错误数组长度为负数方法参数超出可行范围toFixed(-1)类型错误调用不存在的方法new一个非构造函数的内容 var a = new 'String'URIErrordecodeURI()传非法参数URI 统一资源标识符 uniform resource indentifiedURN 统一资源名称原创 2021-05-22 21:24:09 · 208 阅读 · 0 评论 -
ES5-16【utils】数组方法、类数组
数组方法concat返回值是拼接后的数组toString将数组转成字符串,用逗号隔开slice(a,b) [a,b)不传值,拷贝了一份不传b,截取到最后一位传b,截取到b之前的那位a/b是负数(和splice一样,最后一位是-1)join不传参数相当于toString!用逗号连接传空字符串,去除逗号split(a,b) - (字符串方法)不传值,会将整个字符串放进数组第二个参数b,是用a分割后截取b位类数组函数的实参argumentsdo原创 2021-05-22 08:19:36 · 71 阅读 · 0 评论 -
ES5-15 数组基础、数组方法、数组排序
创建数组字面量 var arr = []构造函数 var arr = new Array()不使用new var arr = Array()所有数组都继承于Array.prototype,能使用其中的数组方法数组是另一种形式的对象,访问机制相同稀松数组最后一个,后若是空值,则不计入(最后一个逗号忽略)并非每位都有值使用构造函数,不能有空值,否则报语法错误new Array()的参数用于设置数组长度,或设置数组数组是对象的另一种形式数组方法数组方法 - 继承了数组原型原创 2021-05-21 07:55:52 · 316 阅读 · 0 评论 -
ES5-14 【utils】三目运算符、对象克隆、浅拷贝、深拷贝
浅拷贝for-in(遍历一个实例对象,原型上的属性也会打印)Object.prototype.num = 1function shallowClone(origin, target) { for (var key in origin) { target[key] = origin[key] }}var p1 = { name: '人类', daughter: { first: 'Jessica', }}var p2 =原创 2021-05-20 08:53:22 · 160 阅读 · 1 评论 -
ES5-13 对象属性遍历、this、callee、caller
链式调用在每个函数内部return this访问对象属性点语法[]中括号内必须时字符串数组是特殊的对象对象属性遍历for in(遍历对象或数组)for(var key in obj){ console.log(obj[key]) // obj.key返回undefined // 因为js引擎会转换为obj['key']}instanceofconsole.log([] instanceof Array) // trueconsole.log([] ins原创 2021-05-19 08:01:50 · 232 阅读 · 0 评论 -
ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化
继承深入这两种方式继承不够合理(为什么)将实例作为子类的原型在子类的构造函数内部借用父类的构造函数将父类的原型作为子类的原型(会修改父类的原型)css圣杯布局目标效果1234567JS圣杯模式用buffer实例来隔绝父构造函数的原型和子构造函数的实例封装自执行函数里 隔绝作用域12多人协作开发前后端打印模块化开发什么条件下,执行自执行或者注册原创 2021-05-18 22:02:35 · 136 阅读 · 0 评论 -
ES5-11原型与原型链深入、对象继承
原型谁调用,this就指向谁,当实例对象有该属性时,不会去原型上查找创建对象的两种方法:字面量、new Object()一般不用后面的二者创建出来的对象没有差异Object.create()var 实例 = Object.create(对象/null)将对象或null作为实例的原型new构造函数的时候做了什么实例化对象调用构造函数的初始化属性和方法指定实例对象的原型将null作为实例的原型,原型中将不包含任何属性!无法查找到toString方法(没有__proto__)原创 2021-05-17 08:09:03 · 111 阅读 · 0 评论 -
ES5-10 原型、原型链、闭包立即执行函数、插件开发
1. 原型实例的__proto__属性指向的对象有constructor属性,指向构造函数function Test() {}let tObj = new Test()console.log('实例', tObj)console.log('constructor', tObj.constructor)console.log(tObj.constructor === tObj.__proto__.constructor)实例(实例化的时候)的__proto__ 和构造函数的protot原创 2021-05-16 08:54:27 · 102 阅读 · 0 评论 -
ES5-9 【utils】构造函数及实例化原理、包装类
1. 构造函数在构造函数内部,this指向构造函数实例化的对象(new的时候做的事)当构造函数return引用值时(函数、函数声明、对象、数组、Date…),返回引用值,若是原始值则忽略2.包装类原始值没有自己的方法和属性(严谨吗)console.log(new Number(1))console.log(new String(1))console.log(new Boolean(1))数字经过new Number后成为一个对象,可以为它添加属性和方法,可以参与运算原创 2021-05-15 08:15:53 · 136 阅读 · 0 评论 -
ES5-8 闭包高级、对象、构造函数、实例化
1. 对象对象内定义的函数一般称之为方法,在外部的函数声明称为函数对象删除属性使用delete 关键字var obj = { a: 1, b: 'string'}console.log('obj', obj) // {a: 1, b: "string"}delete obj.bconsole.log('obj', obj) // {a: 1}在对象里,this指代这个对象本身创建对象:使用对象字面量或者new Object()自定义构造函数应用于:模块化、插件化、原创 2021-05-14 07:49:38 · 74 阅读 · 0 评论 -
ES5-7 立即执行函数、闭包深入、逗号运算符
1. 立即执行函数定义在全局的函数只有关闭浏览器或者退出程序才会释放IIFE: immediately-invoked function解决页面加载自动执行,执行完成后立即释放IIFE用匿名函数或者函数声明都是一样的效果,执行完成后立即释放一定是表达式才能被执行符号执行表达式会忽略函数名延伸 表达式后的函数若有名字a,调用.name打印出avar test = function a() { console.log(arguments.callee)}原创 2021-05-13 08:00:41 · 117 阅读 · 0 评论 -
ES5-6 作用域、作用域链、预编译、闭包基础
1. 作用域上一级在执行时,内部函数被定义,内部函数便生成作用域和作用域链(拿上一级的环境),内部函数执行前生成自己的AO,并排在头部函数执行结束时,AO被销毁(回到被定义时的状态)上一级函数销毁时,AO被销毁(其中含内部函数,和其作用域)作用域链里存的是AO、GO的引用每个函数在被定义时,就包含了全局上下文GO,即使这时函数还没被执行a函数在被执行的前一刻,做预编译b函数被定义时,它的作用域链和a函数是一样的(同理a函数被定义时,a的作用域链是GO)2. 闭包原创 2021-05-12 08:06:34 · 108 阅读 · 0 评论 -
ES5-5 参数默认值、递归、预编译、暗示全局变量
1. 参数默认值默认是undefined形参可以有默认值,形参、实参哪个有值取哪个function test(a = 1, b) { console.log(a, b)}test(undefined, 1) // 1 1function test(a = undefined, b) { console.log(a, b)}test(1, 1)// 用es5的写法设置默认值function test(a, b) { a = arguments[0] ||原创 2021-05-11 08:11:44 · 269 阅读 · 0 评论 -
ES5-4 函数基础与种类、形实参及映射、变量类型
模块编程原则:高内聚,低耦合(重复部分少),让一个模块有强的功能性、高的独立性 → 单一责任制,用函数进行解耦合。1. 函数命名规则不能以数字开头可以以字母_$开头包含数字小驼峰命名法// 函数内 a是局部变量,b var在window上,是全局变量(泄漏)var a = b = 1 // 用表达式、字面量的形式声明函数,test1是会被忽略的// test1() 会报错(外部不可见)var test = function test1() { console.log(1) te原创 2021-05-10 07:56:17 · 176 阅读 · 1 评论 -
ES5-3 循环、引用值初始、显示及隐式类型转换
1. 循环for循环的三个参数abc,a只执行一次,c在每次循环后执行// 打印0-100的质数 1不是质数var list = [2]for (var i = 3; i <= 100; i = i + 2) { var flag = false for (var j = 0; j < list.length; j++) { var cur = list[j] if (i % cur === 0 && cu原创 2021-05-09 08:51:27 · 152 阅读 · 1 评论 -
ES5-2 语法、规范、错误、运算符、判断分支、注释
1. 错误出现一个语法错误,则一行代码都不会执行出现通用错误,则中断错误处及之后的代码html内写脚本,脚本代码块之间互不影响,无论其中一个脚本报语法错误还是通用错误2. 运算0 / 0 得到NaN是number类型(NaN与包括自己在内的任何东西都不相等)1 / 0 得到Infinity 是number类型-1 / 0 得到-Infinity是number类型4 % 6得到4,取模a<b时,结果为a交换值++在后面:先打印后运算(打印的时候/参与运算的时候还没有赋原创 2021-05-08 07:42:12 · 140 阅读 · 1 评论 -
ES5-1 发展史、ECMA、编程语言、变量、JS值
1. 5大主流浏览器及内核(自主研发)浏览器内核IEtridentChromewebkit blinkSafariwebkitFirefoxgeckoOperapresto2. 浏览器的历史 和 JS诞生1996 网景公司BE开发出livescript1996 JAVA火,网景livescript不温不火,和SUN合作推广和宣传产品,livescript更名JavaScript2001 IE6 XP诞生 JS引擎2003 Mozill原创 2021-05-07 08:02:34 · 156 阅读 · 0 评论 -
ES5-拓展 箭头函数的this、this的优先级
bind 函数重写返回值让内部函数的this指向和父函数的this,可以显示改变this指向,也可以使用箭头函数箭头代替了function关键字箭头函数内部没有this指向,箭头函数的this是稳定引用父作用域的。因为它的存在就是要稳定this指向。适用于普通函数的所有绑定规则 箭头函数都不能用默认绑定规则(独立调用)对箭头函数无效(箭头函数形式的闭包对改变this指向无效)隐式绑定(对象调用)对箭头函数无效显示绑定(call、apply、bind)对箭头函数无效箭头函数不能new.原创 2021-06-16 07:07:39 · 139 阅读 · 0 评论 -
ES5-拓展 this指向的总结
每个函数在执行时都有自己的this指向1. 默认绑定规则:全局中,this指向window this === window函数的独立调用,this默认指向window (不要把独立调用理解成window调用)// 函数在全局中调用,也就是被window调用function test(){ console.log(this === window) // true}test() // window.test()2. 隐式绑定规则(对象调用)通过对象的属性来调用方法时,thi.原创 2021-06-11 07:57:04 · 107 阅读 · 0 评论 -
ES5-拓展 隐式数据类型转换
Boolean转换原则:非假即真6种虚值原始值转换为原始值对象转换为原始值Date()和new Date()new Date可以不写括号(new方式返回的一定是对象),返回Date对象Date()返回函数执行,返回时间字符串引用值转原始值先找valueOf方法(一般返回的都是本身,所以大多情况看的是toString返回的是什么)再找toString()es6对象方法的简化写法当toString返回的不是原始值时便报错(一般不会,除非刻意重写toString方法原创 2021-06-16 07:33:18 · 138 阅读 · 0 评论 -
ES5-拓展 原型链、继承、类
Symbol不是构造函数object不是原型是实例对象 他的构造器继承原型上的构造器undefined是未定义 null是空指针函数也是实例对象构造函数Object是由Function构造出来的Foo.__proto__ === Function.prototype // trueObject.__proto__ === Function.prototype // trueFunction.prototype.constructor === Function // trueFun.原创 2021-06-17 07:28:45 · 79 阅读 · 0 评论