自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿泽呀的博客

随手记

  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

原创 JavaScript - 基础面函数 - 找到异常值

 JavaScript  - 基础面函数 -  找到异常值将获得一个数组, 数组长度至少为 `3`, 该数组要么为 :除了一个`奇数`, 其余的全为`偶数`, `奇数`为异常值除了一个`偶数`, 其余的全为`奇数`, `偶数`为异常值我们要做的就是找到这个异常值, 并返回这个异常值function findOutlier(arr){ var even = arr.filt...

2019-01-18 11:37:21 393

原创 JavaScript - 基础面函数 - 验证PIN码

 JavaScript  - 基础面函数 -  验证PIN码ATM机允许4或6位PIN码,PIN码不能包含4位数或6位数字。如果函数传递了有效的PIN字符串,则返回true,否则返回false。 start 最多的方案返回的是布尔值, 加上是正则, 调用 正则的 test 方法 刚好合适function validatePIN(pin) { return /^(\d{...

2019-01-15 16:12:33 693 1

原创 JavaScript - 基础面函数 - XXOO

 检查字符串是否具有相同数量的'x'和'o'。该方法必须返回一个布尔值并且不区分大小写。示例:XO("ooxx") => true XO("xooxx") => false XO("ooxXm") => true XO("zpzpzpp") => true // when no 'x' and 'o' is present should return t

2019-01-14 20:27:22 6871

原创 JavaScript - 基础面函数 - 格式化系列之一

 JavaScript  - 基础面函数 -  格式化系列之一给定:包含名称的数组返回:一个字符串格式化为由逗号分隔的名称列表,除了最后两个名称,应该用&符号分隔。function list(names){ return names.reduce(function(prev, current, index, array){ if (index === 0){ ...

2019-01-14 15:09:17 169

原创 JavaScript - 基础面函数 - 0 ~ n 之间的数字之和

求 0 - n 之间的数字之和,需要把 步骤 写出来输入: 5 , 输出: 0+1+2+3+4+5 = 15输入: 0 , 输出: 0=0输入:-1 , 输出: -1<0var SequenceSum = (function() { function SequenceSum() {} SequenceSum.showSequence = function(co...

2019-01-14 12:03:55 451

原创 JavaScript - 基础面函数 - 去掉字符串的头和尾

JavaScript  - 基础面函数 - 去掉字符串的头和尾删除掉字符串的 第一个 和 最后一个 单词不用担心字符串小于两位的情况function removeChar(str) { return str.slice(1, -1);}function removeChar(str){ return str.substring(1,str.length-1)};r...

2019-01-14 09:24:31 7822

原创 JavaScript - 基础面函数 - 优惠卷函数

 JavaScript  - 基础面函数 -  优惠卷函数 注 : 优惠卷的时间格式一样function checkCoupon(enteredCode, correctCode, currentDate, expirationDate){ return enteredCode === correctCode && Date.parse(expirationDate)...

2019-01-13 10:34:24 230

原创 JavaScript - 基础面函数 - 找到最短 | 最长的数

 JavaScript  - 基础面函数 -  找到最短 | 最长的数  返回的是: 这个字符串的长度弊端: 只能判断 `Number` 类型// 找到最短的数function findShort(s){ return Math.min.apply(null, s.split(' ').map(w => w.length));}// 找到最长的数function...

2019-01-12 20:05:30 283

原创 JavaScript - 基础面函数 - 取出字符串的中间数

 JavaScript  - 基础面函数 -  取出字符串的中间数如果长度是偶数, 取中间两个如果长度是奇数, 取中间一个function getMiddle(str){ return str.substr(Math.ceil(str.length / 2 - 1), str.length % 2 === 0 ? 2 : 1)} ...

2019-01-12 15:04:11 1206

原创 JavaScript - 基本面函数 - 如果第一个参数能同时被第二个参数 and 第三个参数整除 就返回 true 否则返回 false

function isDivisible(n, x, y) { return n % x === 0 && n % y === 0} 

2019-01-12 09:50:40 396

原创 JavaScript - 基本面函数 - 找到数组中所有返回 true 的数并计算长度

 JavaScript  - 基本面函数  -  找到数组中所有返回 true 的数并计算长度, 需要考虑到`意外`的情况function isTrue(array) { return array.filter(Boolean).length;} 

2019-01-12 09:20:41 1418

原创 JavaScript - 基本面函数 - 求出数组的和 判断是 "even" or "odd"

 JavaScript  - 基本面函数  -  求出数组的和 判断结果是 "even" or "odd"function oddOrEven(arr) { return arr.reduce((a,b)=>a+b,0) % 2 ? 'odd' : 'even';} 

2019-01-09 19:31:06 925

原创 JavaScript - 基本面函数 - 求数组中所有大于`1`的和, 如果都是`负数`或者`空数组`那么返回`0`

JavaScript  - 基本面函数  -  求数组中所有大于`1`的和, 如果都是`负数`或者`空数组`那么返回`0`推荐使用 第二种 function positiveSum (arr) { // 最让人接受的方法 var total = 0; for (i = 0; i < arr.length; i++) { if (arr[i] > 0) {...

2019-01-09 16:35:54 627

原创 JavaScript - 基本面函数 - 返回字符串中的 最大值 和 最小值

 JavaScript  - 基本面函数  -  返回字符串中的 最大值 和 最小值函数里面: 两种写法的返回值是一样的.有一个是 调用了 隐式类型转换另外一个是 调用了 显示类型转换推荐是的是用 显示类型转换. 这样对于代码的执行速度比较高function maxnumAndminnum(numbers) {    numbers = numbers.split(' ...

2019-01-09 15:06:18 1974

原创 ES6 Peomise详解

 如果你看了我的上一篇文章,也就是 jQuery.Deferred 那么这篇文章应该很好理解点击查看~/** * Promise * 这是一个简单的 promise * new Promise : 定义了一个 promise 对象 * resolve : 这是定义成功执行的回调函数 * reject : 这是定义失败执行的回调函数 * then : 传入两个函数, 一个...

2018-12-09 20:00:06 708

原创 jQuery.deferred()详解

/** 请注意 这个代码是结合 阮老师 的博客来实现的. * 网址 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html * 如果有不懂的请看 阮老师 的网址 */// JQ 1.5 版本之前的 AJAX 方法/** * success : 这是一个成...

2018-12-08 16:35:18 257

原创 Promise 封装 Ajax 方法

var Tool = { ajax: function(obj) { return new Promise((resolve, reject) => { var url = obj.url || location.href; var type = obj.type || 'get'; var d...

2018-12-08 11:03:36 155

原创 jQuery.when() 方法详解

 /** 请注意 这个代码是结合 阮老师 的博客来实现的. * 网址 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html * 如果有不懂的请看 阮老师 的网址 */// JQ 1.5 版本之前的 AJAX 方法/** * success : 这是...

2018-12-08 10:53:41 10644

原创 js中Object的keys()方法和values()方法还有entries()方法

  对Object中的索引进行循环let obj = { name:"张三", sex:"男", age:20, height:150}for ( let key of Object.keys(obj)){ console.log(key)}// name// sex// age// height对Object中的值进行循环。...

2018-08-24 11:48:35 15139 2

原创 javascript中对象的assign()方法

javascript中对象的assign()方法Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。语法:Object.assign(target,...sources)参数:target:新对象,用来接受的对象sources:源对象。返回值:目标对象,新对象。示例:1.用来把几个对象合并到一个对象...

2018-08-24 11:09:54 14938 4

原创 javascipt中fill()方法

fill()方法用以个固定值来填充数组中的空值接受三个参数value:用来填充数组的值start:起始位置。默认从0开始。end:结束位置,不包含结束位置,默认值是整个数组返回值:修改后的数组ps:此方法会修改原数组示例:1.此方法把数组中本来的值修改let a = [1,2,3,4];console.log(a.fill(4));//(4) [4...

2018-08-24 00:26:16 244

原创 ES6中Array.find()方法和Array.findIndex()方法

 两种方法不会改变原数组该方法在第一次调用回调函数的时候就已经确定好索引,在find()方法执行之后再添加到的不会被执行,而删除的项通向会被执行到,值是undefined。 let a = [1,2,3,4,5,6,7,8,9]a.find(function(item,index,arr){ if(index == 0){ a.push("10"); ...

2018-08-23 23:45:55 7467 1

原创 es6新增的Array.of()方法

Array.of()方法Array.of() 方法用于将一组值,转换为数组。Array.of(3, 11, 8) // [3,11,8]Array.of(3) // [3]Array.of(3).length // 1Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致...

2018-08-23 11:40:38 323

原创 es6中Array.from()和数组去重

Array.from()1.复制数组,如果传的是数组,将把数组复制一份传给新数组。let arr = [1,2,3,4,5];let arr2 = Array.from(arr);console.log(arr) // [1,2,3,4,5]console.log(arr2) // [1,2,3,4,5]2.如果是伪数组,将会转成数组在赋给新数组。...

2018-08-23 10:39:33 4499

原创 javascript中的for...of循环

for...of循环这个直接看代码吧1.遍历数组 var arr = [1,2,3,4,5]; for(let val of arr.values()){ console.log(val) } //1 //2 //3 //4 ...

2018-08-22 22:58:41 1667

原创 es6中reduce()方法和reduceRight()方法

es6中reduce()方法从左往右开始参数:prev:它是上一次调用回调时返回的结果,每次调用的结果都会给prevcur:当前的元素index:当前的索引arr:循环的数组返回值:函数累计处理的结果demo:求数组的和。var a = [1,2,3,4,5,6,7,8,9,10]var str = a.reduce(function(prev,c...

2018-08-22 20:52:15 3941

原创 ES6新增的padStart()方法和padEnd()方法

padStart()用于在开头位置补全字符串语法:'abc'.padStart(10, '0123456789')// '0123456abc' 参数:接受两个参数:第一个参数是用来指定字符串的长度,如果该值低于当前字符串的长度,则将按原样返回当前字符串第二个参数是用来补全的字符串,如果此字符串太长而无法保持在目标长度内,则会截断该字符串并应用最左侧的部分,如果省略...

2018-08-21 23:41:20 3228

原创 es6新增repeat() 方法

repeat() 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。其实就是相当于把一个字符串复制了很多份。相信再开发中经常会碰到需要造假数据,有时候甚至需要很长的。有了这个后就可以方便的造重复数据了语法:/** * str: String * count: Number */let resultString = str.repeat(coun...

2018-08-21 22:08:13 2459

原创 ES6新增方法:startsWith()方法和endsWith()方法来判断字符串以什么开头或者什么结尾

startsWith()方法该startsWith()方法确定字符串是否以指定字符串的字符开头,返回true或false视情况而定。判断字符串以什么开头一般的话是用于来判断是否以http://开头或者以file:///开头参数接受两个参数第一个参数,要在此字符串开头搜索的字符,第二个参数是指定从字符串开始的位置,默认从零开始。注意:此方法区分大小写; ...

2018-08-21 14:35:12 13815 1

原创 javascript中的逻辑运算符优先级

javascript中的逻辑运算符优先级逻辑运算符分为:&& (逻辑与)、|| (逻辑或) 、! (逻辑非 ) 而其中的 && 和 || 都是短路运算。逻辑与(&&) :  A && B            如果A为true时,无论B是true还是false,都会返回B;           如果A为fa...

2018-08-20 17:30:58 4757

原创 JavaScript中filter()方法

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];const result = words.filter(word => word.length > 6);console.log(r...

2018-08-18 01:46:17 1885

原创 javascript 中forEach方法

数组的forEach方法(IE9+支持)返回:undefined    forEach 方法按升序为数组中 含 有效值的每一项执行一次callback函数,那些已删除(使用daleta方法等情况) 或者未初始化的项将被跳过(但不包括那些指为undefined的项 ) ;    方法接受一个回调函数,回调函数接受三个参数:当前项、索引、操作的数组var array1 = ['a', '...

2018-08-18 00:06:06 4682

原创 javascript 中map()方法和for...in的区别

数组的map方法(IE9+支持)返回新数组 方法接受一个回调函数,回调函数接受三个参数:当前项、索引、操作的数组 不影响原来的数组 var a = [1,2,6,5,8]; //map方法,返回一个新数组,每个项处理完成后的结果组成的新数组。 //对原数组没有影响 var m = a.map(function(item,index,array){ //item :就是房...

2018-08-17 18:48:32 2258

原创 every()迭代方法

every()迭代方法对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true如果有其中一项返回false.那么返回false并退出执行.语法:arr.every(fn[,thisArg])fn :用来测试每个元素的函数,接受三个参数。thisArg:执行 fn 时使用的 this 值。一般不会用得到这个参数。描述:every方法为数组中...

2018-08-07 13:30:31 1411

原创 JavaScript 中的 some() 方法

some()方法 语法:  arr.some(fn[, thisArg])  参数 fn是用来测试每个元素的函数,接受三个参数:  item:数组中正在处理的元素。 index:数组中正在处理的元素的索引值。array:some()被调用的数组。thisArg:执行 callback 时使用的 this 值。      2.描述:some 为数组中...

2018-08-07 11:21:10 38356 4

原创 indexOf()方法和lastIndexOf()方法还有新增的includes()方法

indexOf()和lastIndexOf()方法操作两个方法都接收两个参数:要查找的项和要查找的起始位置的索引。     indexOf()是从数组的开始向后查找     lastIndexOf()是从数组的末尾向前查找第一个参数:要在数组中定位的元素。第二个参数:用于开始搜索的索引。如果索引大于或等于数组的长度,则返回-1,这意味着不会搜索该数组。如果提供的索引值为...

2018-08-06 18:32:35 4130

原创 splice()方法 使用介绍

接下来的方法估计是数组中最强大的方法了,有很多种用法,1.删除任意数量的项,只需要传入两个参数即可。要删除的第一项的位置和要删除的项数     环境 先声明一个数组。 var str = []; str[0] = "red"; str[1] = "yellow"; str[2] = "black"; str...

2018-08-05 23:33:05 28840 5

原创 将类数组转换成数组的方法——slice()的使用

这边文章分两部分,第一部分是slice()的使用,第二部分是用slice将类数组转换成数组第一部分:官方文档说:slice是用来截取选取数组的,可传入一个或两个参数,返回值是新数组,不会影响原数组。 先new了Array一个数组 str var str = new Array(); str[0] = 1; str[1] = 2;...

2018-08-05 21:26:18 3049

原创 push()和concat()的区别。

一般在数组末尾添加元素用push方法就可以了,但是这样会改变原有数组的数据所以就有了concat方法concat方法是在原有的基础上添加元素并返回链接之后的副本,并不会修改原有的数组。不说废话了,直接上图:new一个实例var arr = new Array();arr[0] = 1;arr[1] = 2;arr[2] = 3;下面分别用两种方法添加元素var arr...

2018-08-05 19:55:13 6537 1

原创 数组重排和反转

数组中已存在两个用来排序的方法:reverse()和sort()方法 只是用来反转数组的话用reverse方法就可以了 var arr = [1,5,6,42,89,2,1]arr.reverse();                //反转数组,不够灵活 所以才有了sort()方法console.log(arr); //[1, 2, 89, 42, 6, 5, 1] ...

2018-08-04 11:50:16 850

JavaScript设计模式

第一部分面向对象的JavaScript 第1章富有表现力的JavaScript 1.1JavaScript的灵活性 1.2弱类型语言 1.3函数是一等对象 1.4对象的易变性 1.5继承 1.6JavaScript中的设计模式 1.7小结 第2章接口 2.1什么是接口 2.1.1接口之利 2.1.2接口之弊 2.2其他面向对象语言处理接口的方式 2.3在JavaScript中模仿接口 2.3.1用注释描述接口 2.3.2用属性检查模仿接口 2.3.3用鸭式辨型模仿接口 2.4本书采用的接口实现方法 2.5Interface类 2.5.1Interface类的使用场合 2.5.2Interface类的用法 2.5.3示例:使用Interface类 2.6依赖于接口的设计模式 2.7小结 第3章封装和信息隐藏 3.1信息隐藏原则 3.1.1封装与信息隐藏 3.1.2接口扮演的角色 3.2创建对象的基本模式 3.2.1门户大开型对象 3.2.2用命名规范区别私用成员 3.2.3作用域、嵌套函数和闭包 3.2.4用闭包实现私用成员 3.3更多高级对象创建模式 3.3.1静态方法和属性 3.3.2常量 3.3.3单体和对象工厂 3.4封装之利 3.5封装之弊 3.6小结 第4章继承 4.1为什么需要继承 4.2类式继承 4.2.1原型链 4.2.2extend函数 4.3原型式继承 4.3.1对继承而来的成员的读和写的不对等性 4.3.2clone函数 4.4类式继承和原型式继承的对比 4.5继承与封装 4.6掺元类 4.7示例:就地编辑 4.7.1类式继承解决方案 4.7.2原型式继承解决方案 4.7.3掺元类解决方案 4.8继承的适用场合 4.9小结 第5章单体模式 5.1单体的基本结构 5.2划分命名空间 5.3用作特定网页专用代码的包装器的单体 5.4拥有私用成员的单体 5.4.1使用下划线表示法 5.4.2使用闭包 5.4.3两种技术的比较 5.5惰性实例化 5.6分支 5.7示例:用分支技术创建XHR对象 5.8单体模式的适用场合 5.9单体模式之利 5.10单体模式之弊 5.11小结 第6章方法的链式调用 6.1调用链的结构 6.2设计一个支持方法链式调用的JavaScript库 6.3使用回调从支持链式调用的方法获取数据 6.4小结 第二部分设计模式 第7章工厂模式 7.1简单工厂 7.2工厂模式 7.3工厂模式的适用场合 7.3.1动态实现 7.3.2节省设置开销 7.3.3用许多小型对象组成一个大对象 7.4示例:XHR工厂 7.4.1专用型连接对象 7.4.2在运行时选择连接对象 7.5示例:RSS阅读器 7.6工厂模式之利 7.7工厂模式之弊 7.8小结 第8章桥接模式 8.1示例:事件监听器 8.2桥接模式的其他例子 8.3用桥接模式联结多个类 8.4示例:构建XHR连接队列 8.4.1添加核心工具 8.4.2添加观察者系统 8.4.3开发队列的基本框架 8.4.4实现队列 8.4.5哪些地方用了桥接模式 8.5桥接模式的适用场合 8.6桥接模式之利 8.7桥接模式之弊 8.8小结 第9章组合模式 9.1组合对象的结构 9.2使用组合模式 9.3示例:表单验证 9.3.1汇合起来 9.3.2向FormItem添加操作 9.3.3向层次体系中添加类 9.3.4添加更多操作 9.4示例:图片库 9.5组合模式之利 9.6组合模式之弊 9.7小结 第10章门面模式 10.1一些你可能已经知道的门面元素 10.2JavaScript库的门面性质 10.3用作便利方法的门面元素 10.4示例:设置HTML元素的样式 10.5示例:设计一个事件工具 10.6实现门面模式的一般步骤 10.7门面模式的适用场合 10.8门面模式之利 10.9门面模式之弊 10.10小结 第11章适配器模式 11.1适配器的特点 11.2适配原有实现 11.3示例:适配两个库 11.4示例:适配电子邮件API 11.4.1用适配器包装Web邮件API 11.4.2从fooMail转向dedMail 11.5适配器模式的适用场合 11.6适配器模式之利 11.7适配器模式之弊 11.8小结 第12章装饰者模式 12.1装饰者的结构 12.1.1接口在装饰者模式中的角色 12.1.2装饰者模式与组合模式的比较 12.2装饰者修改其组件的方式 12.2.1在方法之后添加行为 12.2.2在方法之前添加行为 12.2.3替换方法 12.2.4添加新方法 12.3工厂的角色 12.4函数装饰者 12.5装饰者模式的适用场合 12.6示例:方法性能分析器 12.7装饰者模式之利 12.8装饰者模式之弊 12.9小结 第13章享元模式 13.1享元的结构 13.2示例:汽车登记 13.2.1内在状态和外在状态 13.2.2用工厂进行实例化 13.2.3封装在管理器中的外在状态 13.3管理外在状态 13.4示例:Web日历 13.4.1把日期对象转化为享元 13.4.2外在数据保存在哪里 13.5示例:工具提示对象 13.5.1未经优化的Tooltip类 13.5.2作为享元的Tooltip 13.6保存实例供以后重用 13.7享元模式的适用场合 13.8实现享元模式的一般步骤 13.9享元模式之利 13.10享元模式之弊 13.11小结 第14章代理模式 14.1代理的结构 14.1.1代理如何控制对本体的访问 14.1.2虚拟代理、远程代理和保护代理 14.1.3代理模式与装饰者模式的比较 14.2代理模式的适用场合 14.3示例:网页统计 14.4包装Web服务的通用模式 14.5示例:目录查找 14.6创建虚拟代理的通用模式 14.7代理模式之利 14.8代理模式之弊 14.9小结 第15章观察者模式 15.1示例:报纸的投送 15.1.1推与拉的比较 15.1.2模式的实践 15.2构建观察者API 15.2.1投送方法 15.2.2订阅方法 15.2.3退订方法 15.3现实生活中的观察者 15.4示例:动画 15.5事件监听器也是观察者 15.6观察者模式的适用场合 15.7观察者模式之利 15.8观察者模式之弊 15.9小结 第16章命令模式 16.1命令的结构 16.1.1用闭包创建命令对象 16.1.2客户、调用者和接收者 16.1.3在命令模式中使用接口 16.2命令对象的类型 16.3示例:菜单项 16.3.1菜单组合对象 16.3.2命令类 16.3.3汇合起来 16.3.4添加更多菜单项 16.4示例:取消操作和命令日志 16.4.1使用命令日志实现不可逆操作的取消 16.4.2用于崩溃恢复的命令日志 16.5命令模式的适用场合 16.6命令模式之利 16.7命令模式之弊 16.8小结 第17章职责链模式 17.1职责链的结构 17.2传递请求 17.3在现有层次体系中实现职责链 17.4事件委托 17.5职责链模式的适用场合 17.6图片库的进一步讨论 17.6.1用职责链提高组合对象的效率 17.6.2为图片添加标签 17.7职责链模式之利 17.8职责链模式之弊 17.9小结 词条标签:

2018-08-31

JavaScript模式中文[pdf] 百度云

第1章 简介   模式   JavaScript:基本概念   ECMAScript 5   JSLint   Console   第2章 基本技巧   编写可维护的代码   尽量少用全局变量   for循环   for-in循环   不要增加内置的原型   SWitch模式   避免使用隐式类型转换   使用parseInt()的数值约定   编码约定   命名约定   编写注释   编写API文档   编写可读性强的代码   同行互查   在正式发布时精简代码   运行JSLint   小结   第3章 字面量和构造函数   对象字面量   自定义构造函数   强制使用new的模式   数组字面量   JSON   正则表达式字面量   基本值类型包装器   错误对象   小结   第4章 函数   背景   回调模式   返回函数   自定义函数   即时函数   即时对象初始化   初始化时分支   函数属性——备忘模式   配置对象   Curry   小结   第5章 对象创建模式   命名空间模式   声明依赖关系   私有属性和方法   模块模式   沙箱模式   静态成员   对象常量   链模式   method()方法   小结   第6章 代码复用模式   传统与现代继承模式的比较   使用类式继承时的预期结果   类式继承模式#1——默认模式   类式继承模式#2——借用构造函数   类式继承模式#3——借用和设置原型   类式继承模式#4——共享原型   类式继承模式#5——临时构造函数   Klass   原型继承   通过复制属性实现继承   借用方法   小结   第7章 设计模式   单体模式   工厂模式   迭代器模式   装饰者模式   策略模式   外观模式   代理模式   中介者模式   观察者模式   小结   第8章 DOM和浏览器模式   关注分离   DOM脚本   事件   长期运行脚本   远程脚本   配置JavaScript   载入策略

2018-08-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除