javascript——面向对象程序设计(3)

 1     <script type="text/javascript">
 2         //1、结合使用构造函数模式和原型模式
 3         //2、动态原型模式
 4         //3、计生构造函数模式
 5
 6         //创建自定义类型的常见方式就是组合使用构造函数模式和原型模式。构造函数模式用于定义是实例属性,而原型模式用于定义
 7         //实例属性,而原型用于定义方法和共享的属性。结果,每个实例都会有自己的副本,但同时又共享着对方法的引用,节省内存。
 8
 9         function Person(name, age, job) {
10             var _self = this;
11             _self.name = name;
12             _self.age = age;
13             _self.job = job;
14             _self.friends = ["张三", "李四"];
15         }
16
17         Person.prototype = {
18             constructor: Person,
19             sayName: function () {
20                 alert(this.name);
21             }
22         }
23
24
25         var person1 = new Person("徐磊", 23, "IT");
26         var person2 = new Person("刘德华", 55, "歌手");
27
28         person1.friends.push("张学友");
29         alert(person1.friends);
30         alert(person2.friends);
31         alert(person1.friends === person2.friends);//false
32         alert(person1.sayName === person2.sayName);//true
33
34         //待续……
35     </script>
时间: 2024-10-06 16:41:43

javascript——面向对象程序设计(3)的相关文章

JavaScript面向对象程序设计

理解对象 通用属性 configurable: 表示能否修改属性的特性或可以被删除 Enumerable:表示能否通过 for-in 循环遍历属性 data descriptor: Writable:表示能否修改属性的值 Value:包含这个属性的值 accessor descriptor get: 获取属性值 set: 设置属性值 备注:data descriptor和accessor descriptor 不能同时存在,如果同时存在会报[TypeError: property descrip

javascript面向对象程序设计——继承初步(by vczero)

上一篇说了javascript的封装,没有刻意去说javascript的“共有函数”.“私有函数”,因为个人觉得这只是作用域的问题,我们不能刻意的模仿强类型语言(C++/JAVA)而去编写代码.尊重每一门语言的特性才是最为重要的. 一.基于prototype原型的继承 1 var Person = function(name, age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 Person.prototype = { 7 addUser: f

JavaScript 面向对象程序设计(下)&mdash;&mdash;继承与多态 【转】

JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论一下面向对象程序设计中的另外两个要素:继承与多态. 1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a;

javascript面向对象程序设计——封装(by vczero)

在javascript中,我们宣称是面向对象的程序设计.其实面向对象是js与生俱来的特性,每一门OOP语言都有自己的特性,我们不能为了OOP,去模仿另一门语言,把握语言的特性才是正道.我们可以通过new Object()来创建一个实例,但是不推荐这种形式,我们需要更为直观的数据封装. 一.封装你的数据特性 1 var user = { 2 name: '', 3 email: '' 4 }; 很简单,我们封装了一个JSON格式的对象,也称为字面量对象:User对象包含两个属性name和email

JavaScript面向对象程序设计:数组

或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的. 1. 创建数组 在JavaScript中有很多创建数组的方法.比如使用Array函数.不过这不是现在我们要讲述的.现在我们使用简单的方括号“[]”的办法来创建数组. Js代码 [javascript] view plaincopy 1.var objAyyar = []; // 1 2.var objAyyar = [2]; 

javascript面向对象程序设计系列(一)---创建对象

javascript是一种基于对象的语言,但它没有类的概念,所以又和实际面向对象的语言有区别,面向对象是javascript中的难点之一.现在就我所理解的总结一下,便于以后复习: 一.创建对象 1.创建自定义对象最简单的方式就是创建Object的实例,并在为其添加属性和方法,如下所示: var cat = new Object(); //以猫咪为对象,添加两个属性分别为猫咪姓名和猫咪花色,并添加一个方法,说出猫咪的姓名 cat.name = "cc"; cat.color = &quo

javascript——面向对象程序设计(2)

1 <script type="text/javascript"> 2 //1.理解原型对象 3 //2.原型与in操作符 4 //3.更简单的原型语法 5 //4.原型的动态性 6 //5.原生对象原型 7 //6.原型对象的问题 8 9 //1.无论什么时候,只要创建了一个函数,就会根据一组特定的规则,为该函数创建一个prototype属性,该属性指向函数的原型对象 10 //在默认情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性包

javascript——面向对象程序设计(1)

1 <script type="text/javascript"> 2 //ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值.对象或者函数” 3 //理解对象,最简单的方式就是通过创建一个Object的实例,然后为它添加属性和方法 4 var person = new Object(); 5 person.name = "Xulei"; 6 person.age = "23"; 7 person.job = &q

javascript——面向对象程序设计(4)

1 <script type="text/javascript"> 2 //1.继承 3 //2.原型链 4 //3.借用构造函数 5 //4.组合继承 6 //5.原型式继承 7 //6.寄生式继承 8 9 //1.继承是OO中最让人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承. 10 //接口继承只支持方法签名,而实现继承则继承实际的方法. 11 //由于函数没有签名,所以在ECMAScript中无法实现接口继承,只支持实现继承,而且其实现继承主要