加载中
《JavaScript高级程序设计(第3版)》阅读笔记

JavaScript创建对象(一)—— 工厂模式 JavaScript创建对象(二)——构造函数模式 JavaScript创建对象(三)——原型模式 JavaScript创建对象(四)——组合使用构造函数和原型模式 JavaSc...

2018/10/20 11:06
43
JavaScript继承(六)——寄生组合式继承

JavaScript继承(三)——组合继承中讲到,组合继承是JavaScript中最常用的继承模式,但是它也有自己的不足之处,现在我们就来剖析它的不足,如下示例: function Human(name){ this.name = ...

02/16 15:11
10
JavaScript继承(五)——寄生式继承

首先回顾一下原型式继承: function object(obj){ function F(){} f.prototype = obj; return new F(); } 寄生式继承是与原型式继承紧密相关的一种思路,并且同样也是由克罗克福德推而广之的...

02/13 07:09
15
JavaScript中对象的浅复制和深复制

在JavaScript中,如果要复制一个变量我们应该怎么做呢?下面这种做法是最简单的一种形式: //把a复制给b let a = 12; let b = a; 这种复制方法只能适用于基本类型,如果a是对象怎么办呢?我们...

02/08 17:32
1K
JavaScript继承(四)——原型式继承

道格拉斯·克罗克福特在2006年提出了原型式继承,他的想法是基于已有的对象借助原型创建新对象,同时还不必因此创建一个自定义类型。为此,他给出了下面的函数: function object(obj){ func...

02/02 08:46
46
JavaScript继承(三)——组合继承

借用构造函数继承解决了原型链数据共享和无法向超类型传递参数的问题,但自身的缺陷是不能使用超类型原型中定义的方法。组合继承是将原型链继承和借用构造函数继承组合到一起,从而发挥二者之...

01/26 11:38
14
JavaScript继承(二)——借用构造函数

JavaScript继承(一)——原型链中提出原型链继承的两个问题:一是原型的数据共享问题,二是创建子类型的实例时,不能向父类型的构造函数中传递参数。这两个问题的根源还是在于使用原型模式创...

01/20 22:50
14
JavaScript继承(一)——原型链

继承是面向对象语言中一个最为人津津乐道的概念。许多面向对象语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。在ECMAScript中,函数没有...

01/06 12:40
16
JavaScript创建对象(七)——稳妥构造函数模式

道格拉斯-克罗克福德发明了JavaScript中的稳妥对象这个概念。所谓稳妥对象,指的是没有公共属性,而且其方法也不引用this的对象。稳妥对象最适合在一些安全的环境中(这些环境中会禁止使用t...

01/01 09:48
13
JavaScript创建对象(六)——寄生构造函数模式

我们已经学过五种创建对象的方式了,通常,在前述的几种模式都不适用的情况下,可以使用寄生构造函数模式。这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再...

2018/12/23 16:36
15
JavaScript执行环境及作用域(三)——没有块级作用域

JavaScript中没有块级作用域经常会导致理解上的困惑,在其他类C的语言中,由花括号封闭的代码都有自己的作用域,因而支持根据条件来定义变量。但是在JavaScript中下面的代码并不会得到想象中...

2018/12/16 18:26
13
JavaScript执行环境及作用域(二)——延长作用域链

虽然执行环境的类型总共只有两种——全局和局部(函数),但还是有办法来延长作用域链的,这么说是因为有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。...

2018/12/09 08:30
13
JavaScript执行环境及作用域(一)——执行环境栈和作用域链机制

执行环境是JavaScript中最为重要的一个概念,每个执行环境都有一个与之关联的变量对象,执行环境中所有的变量和函数都保存在这个对象中。我们编写的代码是无法访问这个变量对象的,只有解析器...

2018/12/01 15:55
16
JavaScript创建对象(五)——动态原型模式

对于有其他面向对象语言开发经验的人来说,在看到独立的构造函数和原型时,很可能会感到非常困惑。比如在Java中(没有Java经验的开发者此段可忽略,只要知道后面提出的结论就好了),有类的概...

2018/11/05 00:15
22
关于JavaScript原型属性若干特点的分析

delete关键字 对象属性会屏蔽原型属性,通过delete删除对象的属性,可以继续访问原型属性,达到解除屏蔽的目的,看如下代码: function Person(name, age, job){ this.name = name; this.ag...

2018/10/27 22:35
17
JavaScript使用原型判断对象类型

constructor属性 在JavaScript创建对象(二)——构造函数模式中,我们说过可以使用对象的constructor属性判断对象的类型:p1.constructor === Person,可能当时就有细心的读者会想,我们并没...

2018/10/19 21:18
13
JavaScript创建对象(四)——组合使用构造函数和原型模式

在JavaScript创建对象(三)——原型模式中,我们阐述了原型模式存在的两个问题:一是没办法通过构造函数初始化对象属性,二是共享引用类型的数据导致数据错乱。于是我们提出组合使用两种模式...

2018/10/13 12:07
34
JavaScript创建对象(三)——原型模式

在JavaScript创建对象(二)——构造函数模式中提到,构造函数模式存在相同功能的函数定义多次的问题。本篇文章就来讨论一下该问题的解决方案——原型模式。 首先我们来看下什么是原型。我们...

2018/09/30 11:01
793
JavaScript创建对象(二)——构造函数模式

在JavaScript创建对象(一)—— 工厂模式留下了一个问题,就是创建一个对象怎么判断一个对象的类型。换句话说使用下面这种方式: function createPerson(name, age, job){ var o = new Obj...

2018/09/15 13:35
68
JavaScript创建对象(一)—— 工厂模式

使用Object构造函数是js中创建对象最简单的一种方式: var person = new Object(); person.name = 'Bob'; person.age = 18; person.job = '全栈工程师'; person.sayName = function(){ conso...

2018/09/11 20:58
70

没有更多内容

加载失败,请刷新页面

返回顶部
顶部