2016-07-31 曹强
原型链继承 让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法 ``` function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType() { this.subProperty=false; } //继承SuperType SubType.prototype=new SuperType(); SubType.prototype.getSubValue=f 继续阅读 »
2016-08-21 曹强
相信大家写过AngularJS的都会发现,很多人在处理表单的数据绑定时,都习惯性的把ng-model绑定在$scope的一个对象属性上,而不是直接绑定在scope上。比如说使用而不是。这是为什么呢?这样在controller里面岂不是写起来更复杂吗?每次访问的时候都要多“点”一下,为什么不直接绑在$scope上呢?其实这样写自然是有它的好处的,而且这种写法也是推荐的最佳实践,尤其是在处理嵌套scope的情形下,这样写是很有必要的。为了弄清楚这么写的原因,我们需要深入的研究一下AngularJS里scope的继承。 more 基于原型链的继承 AngularJS的官方文档里有这么一句话来描述scope:A "child scope 继续阅读 »
2014-07-13 Lim Geng
创建类 1.工厂模式:解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型) ``` funtion createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function () { alert(this.name); }; return o; } var person1 = createPerson("Nicholas", 29, "SE"); ``` 2.构造函数模式:缺点是每个方法都要在每个实例上 继续阅读 »
2015-10-14 Jason Liao
在大部分的语言中,都是类和对象的概念,类继承于其他类 但是在 JavaScript 中,继承是基于原型的,这意味着我们没有真真切切的 "类",我们是由对象继承于对象的(OLOO-Objects Linking to Other Object) 继续阅读 »
2016-06-08 浩阳
content {:toc} 记录一下阅读蝴蝶书的笔记,本篇为书中以下章节的笔记:继承、数组和正则表达式。 继承 继承的两大好处:代码重用,引入一套类型系统的规范。 伪类 JavaScript 通过构造器函数产生对象。 继续阅读 »
2016-10-12 曹强
模版方法是一种只需要使用继承就可以实现的非常简单的模式。他由两部分组成,第一部分是抽象父类,第二部分是具体实现子类。通常在抽象父类中封装了子类的算法框架,包括实现一些共用方法以及封装子类所有方法的执行顺序。子类通过继承这个抽象类,也继承了整个算法结构,并且可以选择重写父类的方法。 Coffee or Tea 假设我们现在要泡一杯咖啡步骤如下: * 把水煮沸 * 用沸水冲泡咖啡 * 把咖啡倒进杯子 * 加糖和牛奶 泡茶的步骤: * 把水煮沸 * 用沸水浸泡茶叶 * 把茶水倒进杯子 * 加柠檬 经过比较,我们可以发现泡茶和泡咖啡有以下共同点: 原料不同。一个是茶一个是咖啡,但是我们都可以把它们抽 继续阅读 »
2016-10-12 曹强
装饰者模式:给对象动态地增加职责。跟继承相比,装饰者是一种更轻便灵活的做法,是一种“即用即付”的方式。 js的装饰者 假设我们在编写一个飞机大战游戏,这个飞机可以升级,发射导弹,发射原子弹 var plane = { fire: function() { console.log('发射普通子弹'); } }; var missileDecorator = function() { console.log('发射导弹'); }; var atomDecorator = function() { console.log('发射原子弹'); }; var fire1 = plane.f 继续阅读 »
2016-08-03 曹强
引用类型 Object类 ```text ECMAScript中的所有类都是由Object类继承而来。 Object类具有下列属性: Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数 Prototype:对该对象的对象原型的引用。 Object类还有几个方法: 1、PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举 2、ToString():返回对象的原始字符串表示。 3、ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。 继续阅读 »
2014-06-21 W.Y.
此文译自 Dmitry A. Soshnikov 的 ECMA-262-3 in detail. Chapter 7.1. OOP: The general theory. 概述 本文主要讨论 ECMAScript 中面向对象编程。之前已经有大量的文章讨论过该话题了,但本文与那些文章不同,本文主要从理论方面来解析其内部原理。重点讨论对象创建算法,对象之间的关系(包含最基本的关系 -- 继承)是如何形成的,并给出了明确的定义(我希望这可以消除一些文章中对于 JavaScript 中 OOP 的疑虑和混乱)。 more 概论、范式和思想 在开始讨论之前,有必要掌握一些 OOP 的基本特征,并弄清楚一些基本概念。 ECMAScr 继续阅读 »
2015-06-14 W.Y.
ES6
欢迎来到深入解析 ES6 系列,本系列将探讨 JavaScript 即将面世的新版本 -- ECMAScript 6。ES6 包含许多新特性,这使得 JavaScript 语言更强大和更具表现力,接下来的每周我们将逐一揭开 ES6 的神秘面纱。在开始之前,我们值得花几分钟时间来谈谈什么是 ES6 或者你期待它是什么样的。 more 什么是 ECMAScript JavaScript 语言的标准是由 ECMA(类似 W3C 的标准化组织)制定,并命名为 ECMAScript,除其他事项外,ECMAScript 还定义了: 语法规则 -- 解析规则、关键字、声明、操作符等 变量类型 -- 布尔、数字、字符串、对象等 原型和继承机 继续阅读 »