javascript学习笔记(五)

第六章学习

(这一章看的我云里雾里,我会多看两遍的)

 

伟伟:12月1日

这一章通过一整节来慢慢引出了js中继承的概念

ECMAScript支持面向对象OO编程,但js中并没有类和接口这种概念。它实现面向对象只是通过对象

一、对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体。

在没有类的情况下,可以采用下列模式创建对象:

1、工厂模式:创建对象通过简单的函数,为对象添加属性和方法,然后返回对象。这个模式后来被构造函数模式取代

2、构造函数模式:可以创建自定义引用类型,可以像创建内置对象实例一样使用new操作符,

缺点:它的每个成员(包括函数)都没有无法得到复用

特点:与对象具有松散耦合的特点,可以在多个对象间共享函数

3、原型模式(理解里面函数之间的引用过程就可以理解继承是怎么来的了)

使用构造函数的prototype属性来指定哪些应该共享的属性和方法。

组合使用构造函数模式和原型模式时,使用构造函数定义实例属性,而使用原型定义共享的属性和方法

二、js主要通过原型链来实现继承。

1、原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的,这样,子类型就能够访问超类型的所有属性和方法

2、原型链的问题是对象实例共享所有继承的属性和方法,不适合单独使用

3、如何解决2这个问题:利用构造函数,在子类型构造函数的内部调用超类型构造函数。这样就可以做到每个实例都具有自己的属性,还能保证只使用构造函数模式来定义类型。

4、使用最多的继承模式是组合继承,这种模式使用原型链继承共享属性和方法,而通过借用构造函数继承实例属性

此外,还存在下列可选择的继承模式:(这个部分暂时不是很明白)

1、原型式继承:可以在不必预先定义构造函数的情况下实现继承,其本质是执行对给定对象的浅复制。而复制的得到的副本还可以得到进一步的改造

2、寄生式继承:与原型式继承非常相似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。为了解决组合继承模式由于多次调用超类型构造函数而导致的低效率问题,可以将这种模式与组合继承一起使用

3、寄生组合式继承:实现基于类型继承的最有效的方式

时间: 2024-08-05 15:23:19

javascript学习笔记(五)的相关文章

前端乱煮之javascript学习笔记五

1 window对象: 所有浏览器都支持window对象,它表示浏览器窗口.所有javascript的全局对象.全局函数以及变量都自动成为window对象的成员.全局变量是window对象的属性,全局函数是window对象的方法. 确定浏览器可视窗口的尺寸大小(除去工具栏和滚动条)的三种方法: (1)window.innerHeight 得到浏览器的可视高度,window.innerWidth得到浏览器的可视宽度.(Internet Explorer.Chrome.Firefox.Opera 以

JavaScript学习笔记五:变量、作用域和内存问题

1.ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.在很多语言中,字符串以对象的形式来表示,因此被认为是引用类型的,ECMAScript放弃了这一传统. 2.从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,两个变量值操作不会相互影响. 3.从一个变量向另一个变量复制引用类型的值时,存储在变量对象中的值复制一份放到为新变量分配的空间中,不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象,

javascript学习笔记(五)

第一步,实现demo样式 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>鼠标移入/移出改变样式</title> <style> body{color:#fff;font:12px/1.5 Tahoma;} #div1 {width:150px;height:150

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

javascript学习笔记之时间定制器

时间间隔定制器 单次定制 setTimeout() 函数 setTimeout("操作",时间); eg:setTimeout("alert('五分钟后显示',5*60*1000); 多次定制 setIntervar()函数 setIntervar("操作",间隔时间); eg:setIntervar("alert('每间隔五分钟显示',5*60*1000); javascript学习笔记之时间定制器

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定