JavaScript高级程序设计第三版
8笔
这个作者很懒,什么都没留下…
展开
-
原创 《js高级程序设计》三——4原型式继承 5寄生式继承 6寄生组合式继承 小结
原型式继承没有使用严格意义上的 构造函数。借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型function object(o){ function F(){} F.prototype = o; return new F();} 在 object()函数内部,先创建了一个临时性的构造函数,然后将传入的对象作为这个构造函数的 原型,后返回了这个临时类型的一个新实...原创 2019-10-15 23:55:21 · 101 阅读 · 0 评论 -
原创 《js高级程序设计》三——3组合继承
组合继承 combination inheritance也叫做伪经典继承,指的是将原型链和借用构造函数的 技术组合到一块,从而发挥二者之长的一种继承模式思路:使用原型链实现对原型属性和方 法的继承,而通过借用构造函数来实现对实例属性的继承既通过在原型上定义方法实现了函数 复用,又能够保证每个实例都有它自己的属性function SuperType(name){ this.name ...原创 2019-10-15 22:13:17 · 122 阅读 · 0 评论 -
原创 《js高级程序设计》三——2借用构造函数
借用构造函数 constructor stealing(有时候也叫做伪造对象或经典继承)解决原型中包含引用类型值所带来问题基本思想:在子类型构造函数的内部调用超类型构造函数。使用call(), apply()function SuperType(){ this.colors = ["red", "blue", "green"];}function SubType(){ //继承...原创 2019-10-15 22:07:27 · 108 阅读 · 0 评论 -
原创 《js高级程序设计》三——继承 1原型链
许多 OO语言都支持两种继承方式:接口继承 :只继承方法签名 实现继承 :继承实际的方法ECMAScript只支持实现继承,而且其实现继承主要是 依靠原型链 来实现的。因为函数没有签名 。原型链将原型链作为实现继承的主要方法。其基本思想是 利用原型 让一个引用类型继承另一个引用类型的属性和方法构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函...原创 2019-10-15 21:49:56 · 105 阅读 · 0 评论 -
《js高级程序设计》三——4组合使用构造函数模式和原型模式 5动态原型模式 6寄生构造函数模式 7稳妥构造函数模式
组合使用构造函数模式和原型模式——使用广泛、认同度高的一种创建自 定义类型的方法构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本, 但同时又共享着对方法的引用,大限度地节省了内存。另外,这种混成模式还支持向构造函数传递参 数;可谓是集两种模式之长。function Person(name, age, job){ this.n...原创 2019-10-14 22:59:03 · 141 阅读 · 0 评论 -
《js高级程序设计》三——创建对象 1工厂模式,2构造函数模式,3原型模式
虽然 Object 构造函数或对象字面量 都可以用来创建单个对象,但这些方式有个明显的缺点:使用同 一个接口创建很多对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体。工厂模式工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后 面还将讨论其他设计模式及其在 JavaScript中的实现)。考虑到在 ECMAScript中无法创建类,...原创 2019-10-14 22:20:01 · 130 阅读 · 0 评论 -
《js高级程序设计》三——六 面向对象:属性类型(数据,访问器),定义多个属性,读取属性特性
面向对象的程序设计面向对象Object-Oriented,OOECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”属性类型ECMA-262 第 5 版在定义只有内部才用的 特性(attribute) 时,描述了 属性(property) 的各种特征。在 JavaScript中不能直接访问它们规范把它们放在了两对方括号中,例如[[Enumerable]...原创 2019-10-09 18:16:22 · 284 阅读 · 0 评论 -
《js高级程序设计》三——7单体内置对象 1.Global对象 2. Math对象 第五章小结
“由 ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript 程序执行之前就已经存在了。”已经介绍了大多数内置对象,例如 Object、Array 和 String。ECMA-262 还定义了两个单体内置对象:Global 和 Math。Global对象Global(全局)对象可以说是 ECMAScript 中最特别的一个对象了,因为不管你从什么角度上...原创 2019-10-09 16:15:11 · 115 阅读 · 0 评论 -
《js高级程序设计》三——6基本包装类型Boolean,Number,String
3 个特殊的引用类型:Boolean、Number 和String这些类型与本章介绍的其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据var s1 = "some text";var s2 = s1.substring(2); 当第二行代码访问 s1 ...原创 2019-10-08 17:29:35 · 142 阅读 · 0 评论 -
《js高级程序设计》三——5Function类型:对象arguments(属性:callee),this(属性:caller);属性length,prototype;方法apply,call,bind
函数实际上是对象,因此函数名 实际上也是一个指向函数对象的指针,不会与某个函数绑定。每个函数都是 Function 类型的实例,而且都与其他引用类型一样具有属性和方法函数定义:函数声明语法:function sum (num1, num2) { return num1 + num2;} 函数表达式:var sum = function (num1,num2){ retu...原创 2019-10-07 23:21:19 · 168 阅读 · 0 评论 -
《js高级程序设计》第三版——4RegExp类型 正则表达式
ECMAScript 通过 RegExp 类型来支持正则表达式字面量形式:var expression = / pattern / flags ; 构造函数形式:var expression = new RegExp('pattern','flags');可以使用字面量定义的任何表达式,都可以使用构造函数来定义, 但所有元字符都必须双重转义模式(pattern) :可以是任何简单...原创 2019-10-07 20:20:07 · 243 阅读 · 0 评论 -
《js高级程序设计》第三版——3Date类型
Date类型在早期 Java中的 java.util.Date 类基础上构建的使用自 UTC(Coordinated Universal Time,国际协调时间)1970年 1月 1日午夜(零时)开始经过 的毫秒数来保存日期创建一个日期对象:var now = new Date();自动获得当前日期和时间var now = new Date(Date.parse(value) )...原创 2019-10-06 21:54:19 · 142 阅读 · 0 评论 -
《js高级程序设计》第三版——严格模式,语法,数据类型
严格模式 strict mode在严格模式下,ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:"use strict";也可以指定函数在严格模式下执行:function doSomething(){ "use strict"; //函数体} 支持的的浏览器:IE10+、Firef...原创 2019-10-01 23:14:00 · 165 阅读 · 0 评论 -
《js高级程序设计》第三版——操作符
一元操作符++、- -,+、-只能操作一个值1. 递增和递减a++ , ++aa-- , --a不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象2. 一元 加 和 减在对非数值应用一元加减操作符时,该操作符会像 Number() 转型函数一样对这个值执行转换。换句话说,布尔值 false 和 true 将被转换为 0 和 1,字符串值会被按照一组特殊的规则进行解析,...原创 2019-10-02 17:42:33 · 131 阅读 · 0 评论 -
《js高级程序设计》第三版———语句,函数,第三章小结
也称为流控制语句if 语句if (condition) statement1 else statement2会自动调用 Boolean()转换函数将condition这个表达式的结果转换为一个布尔值do-while 语句后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。换句话说,在对条件表达式求值之前,循环体内的代码至少会被执行一次while 语句前测试循环语句,也...原创 2019-10-03 00:01:34 · 109 阅读 · 0 评论 -
《js高级程序设计》第三版———基本类型,引用类型
第四章 变量、作用域和内存问题JavaScript 的变量只是 在特定时间用于保存特定值 的一个名字而已4.1 基本类型和引用类型的值基本类型值:简单的数据段引用类型值:可能由多个值构成的对象。在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。引用类型的值是保存在内存中的对象。JavaScript 不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。...原创 2019-10-03 23:34:29 · 85 阅读 · 0 评论 -
《js高级程序设计》第三版———执行环境及作用域
建议先观看成哥作用域视频,再看书执行环境执行环境(execution context,有时也称为“环境”):定义了变量或函数有权访问的其他数据,决定了它们各自的行为每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中在 Web 浏览器中,全局执行环境(最外围执行环境)被认为是 window 对象,因此所有全局变量和函数都是...原创 2019-10-04 22:32:39 · 102 阅读 · 0 评论 -
《js高级程序设计》第三版——垃圾收集,第四章小结
JavaScript 具有自动垃圾收集机制,即 执行环境会负责管理代码执行过程中使用的内存。原理:找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性地执行这一操作。函数中局部变量的正常生命周期:只在函数执行的过程中存在两种策略:1. 标记清除 mark-and-sweep —— 最常用当变量进入环境(例如,在函...原创 2019-10-04 23:53:07 · 173 阅读 · 0 评论 -
《js高级程序设计》第三版——1.Object类型
第五章 引用类型引用类型的值(对象)是引用类型的一个实例。在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起。别称:类,但这种称呼并不妥当。对象定义,因为它们描述的是一类对象所具有的属性和方法引用类型与类看起来相似,但它们并不是相同的概念。ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。...原创 2019-10-05 19:34:29 · 114 阅读 · 0 评论 -
《js高级程序设计》第三版——2.Array类型(检测数组,转换方法,栈方法,队列方法,重排序方法,操作方法,位置方法,迭代方法,归并方法
2. Array 类型ECMAScript 数组的每一项可以保存任何类型的数据。创建方式:使用Array函数var colors = new Array();var colors = new Array(20); //指定长度var colors = new Array(“red”, “blue”, “green”); //指定项使用数组字面量表示法var colors...原创 2019-10-05 23:40:45 · 133 阅读 · 0 评论 -
《js高级程序设计》第三版——js简史,实现,版本
实现ECMAScript 的宿主环境:web浏览器Node(一种服务端 JavaScript 平台)Adobe Flash文档对象模型(DOM,Document Object Model)是针对 XML 但经过扩展用于 HTML 的应用程序编程接口(API,Application Programming Interface)DOM1 级:DOM 核心规定的是如何映射基于 X...原创 2019-09-30 13:26:59 · 342 阅读 · 0 评论