JavaScript笔记四:面向对象的程序设计

1、理解对象

属性类型:数据类型和访问器类型

数据属性:[[Configurable]]:能否通过delete删除属性从而重定义属性或者能否修改属性的特性,能否把属性修改为访问器属性

[[Enumerable]]:能否通过for-in 循环返回属性

[[Writable]]:能否修改属性的值

[[Value]]:包含这个属性的数据值

访问器属性:[[Configurable]]:能否通过delete删除属性从而重定义属性或者能否修改属性的特性,能否把属性修改为数据属性

[[Enumerable]]:能否通过for-in 循环返回属性

[[Get]]:在读取属性时调用的函数

[[Set]]:在写入属性时调用的函数

2、创建对象

工厂模式:抽象具体对象的过程。用函数来封装以特定接口创建对象的细节(解决了多次创建对象的问题,但是没有解决对象识别的问题)

构造函数模式:构造函数以大写字母开头它没有显式的创建对象,直接将属性和方法赋给了this对象,没有ruturn对象。将来可以将它的实例标识为一种特定的类型,正是构造函数模式胜过工厂模式的地方。

原型模式:创建的函数都有一个原型属性,这个属性是一个指针,指向一个对象,而这个对象包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处是可以让所有的对象实例共享它所包含的属性和方法。

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

动态原型模式:把所有的信息都封装在构造函数中,而通过在构造函数中初始化模型,又保持了同时使用构造函数和原型的优点

寄生构造函数模式:创建一个函数,该函数的作用是封装对象的代码,然后再返回创建的对象。

稳妥构造函数模式:遵循与寄生构造函数类似的模式,但是它新创建对象的实例方法不引用this而且不使用new 操作符调用构造函数。

3、继承

原生链:利用原型让一个引用类型继承另一个引用类型的属性和方法。每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型的内部指针。

继承通过创建SuperType的实例,并将该实例赋给SubType.prototype实现的。

组合继承:将原型链和借用构造函数的技术组合到一块。既通过在原型上定义方法实现了函数复用又能保证每个实例都有它自己的属性。

原型式继承:可以在不必预先定义构造函数的情况下实现继承,其本质是执行对给定对象的浅复制。

寄生式继承:与原型式继承非常相似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。

寄生组合式继承:集寄生式继承和组合继承的优点于一身,是实现基于类型继承的最有效力的方式。

时间: 2024-10-12 23:21:22

JavaScript笔记四:面向对象的程序设计的相关文章

javascript 高级程序设计学习笔记(面向对象的程序设计) 2

在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系. function Dog () { } var friend = new Dog(); Dog.prototype ={ constructor : Dog, name : "Bob", age : 11, jump : function () { alert("跳一下"); } }; frien

【JavaScript】之面向对象的程序设计

最近几天跟着视频利用原生的JavaScript做了几个小插件,有图片画廊和图片轮转,实践的过程中,发现对JS的面向对象部分很是陌生,今日重看了<JavaScript高级程序设计>的面向对象部分,并结合了IMOOC网上的<JS深入浅出>教程在此做一下知识的梳理和总结. 一.什么是对象 ECMA-262中把对象定义为:"无序属性的组合,每个属性包含基本值.对象或者函数." 这就相当于说对象是一组没有特定顺序的值,每个属性或方法都有一个名字key,和对应的value.

JavaScript学习--Item37 面向对象高级程序设计

1. JS是基于原型的程序 建立一个简单的面向对象的类.有属性,有方法. function Aaa(){ this.name = '小明'; } Aaa.prototype.showName = function(){ alert( this.name ); }; var a1 = new Aaa(); a1.showName(); 在JS的自身的对象中,也是new一个对象,然后调用方法,比如: var arr = new Array(); arr.push(); arr.sort(); 在JS

从头开始学JavaScript 笔记(四)——操作符

一.一元操作符 1.自增自减操作符:分为前置型和后置型: 前置型:++a;--a; 后置型:a++;a--; 例: 1 <script type="text/javascript"> 2 var a, b,i= 1,j=1; 3 a=i++; 4 b=++j; 5 alert("a="+a+",i="+i+",b="+b+",j="+j);//a=1,i=2,b=2,j=2 6 </scr

读书笔记之面向对象的程序设计-1理解对象

ECMA-262把对象定义为:"无序属性的集合,其属性可以包含基本值.对象或者函数." 创建自定义对象的最简单方式就是创建一个Object的实例 eg:先创建一个名为person的对象,并为他添加了三个属性和一个方法. 1 var person = new Object(); 2 person.name = "Nicholas"; 3 person.age = 29; 4 person.job = "Software Engineer"; 5 p

JavaScript 面向对象的程序设计记录笔记

以下为JavaScript高级程序设计第六章面向对象的程序设计读书笔记记录. 对象存在两个属性: 数据属性/ 访问器属性. 数据属性包括四个值: Configurable: 默认值为true, 表示能否通过delete删除属性重新定义:能否修改属性特性,或者能否吧属性修改为访问器属性. Enumable:  表示能否通过for in循环返回属性.默认值为true. writable: 表示能否修改属性,默认值为true. Value:包含这个属性的数据值. 访问器属性包括四个值:Configur

JavaScript 面向对象的程序设计记录笔记2(设计模式)

以下为JavaScript高级程序设计 第六章面向对象的程序设计6.2节 创建对象(设计模式部分)读书记录. 1)工厂模式: function createPerson(name, age, sex) { var o = new Obejct(); o.age = age; o.sex = sex; o.name = name; return o; } var person = createPerson('Tom', 12, 'male'); var person = createPerson(

JavaScript高级程序设计笔记之面向对象

说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,JavaScript中如何面向对象? JavaScript中将对象定义为:一组无序的 键值对的集合,属性以及方法的名称就是键,键的值可以是任何类型(字符串,数字,函数--) 在JavaScript中,所有对象继承自Object,所有对象继承自Object,所有对象继承自Object! 创建 1  简单创建

JavaScript 面向对象的程序设计(一)之理解对象属性

首先,JavaScript 面向对象的程序设计,主要分三部分. 理解对象属性: 理解并创建对象: 理解继承. 本文主要从第一方面来阐述: 理解对象属性 首先我们来理解Javascript对象是什么?在Javascript中,万物皆对象.其中创建自定义对象的最简单的方式就是创建一个Object的实例,如下: ECMAScript中有两种属性:数据属性和访问器属性. 数据属性:其中数据属性有四个描述其行为的特性:Configurable: 表示能都通过delete删除属性从而重新定义属性.Enume