javascript——面向对象程序设计(3)
<script type="text/javascript">
//1、结合使用构造函数模式和原型模式
//2、动态原型模式
//3、寄生构造函数模式
//4、稳妥构造函数模式 //创建自定义类型的常见方式就是组合使用构造函数模式和原型模式。构造函数模式用于定义是实例属性,而原型模式用于定义
//实例属性,而原型用于定义方法和共享的属性。结果,每个实例都会有自己的副本,但同时又共享着对方法的引用,节省内存。 function Person(name, age, job) {
var _self = this;
_self.name = name;
_self.age = age;
_self.job = job;
_self.friends = ["张三", "李四"];
} Person.prototype = {
constructor: Person,
sayName: function () {
alert(this.name);
}
} var person1 = new Person("徐磊", 23, "IT");
var person2 = new Person("刘德华", 55, "歌手"); person1.friends.push("张学友");
alert(person1.friends);
alert(person2.friends);
alert(person1.friends === person2.friends);//false
alert(person1.sayName === person2.sayName);//true //2、动态原型模式
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
if(typeof this.sayName !="function"){
Person.prototype.sayName=function(){
alert(this.name)
}
}
} //3、寄生构造函数模式
function Person(name,age,job) {
var o=new Object();
o.name=name;
o.age=age;
o.job=job;
o.sayName=function(){
alert(this.name);
}
return o;
} //这个模式可以在特殊情况下为对象创建构造函数。
function SpecialArray() {
var values=new Array();
values.push.apply(values,arguments);
values.toPiedString=function(){
return this.split('|');
}
return values;
} var colors=new SpecialArray("red","blue","green");
colors.toPiedString();//"red|blue|green" //4、稳妥构造函数模式
//稳妥构造函数的模式是遵循寄生构造函数的模式,但是有两点不同:1、新创建对象的实例方法不引用this;2、不使用new操作符调用构造函数
function Person(name,age,job) {
var o=new Object();
//这里可以定义私有变量
//添加方法
o.sayName=function(){
alert(this.name);
}
return o;
} var friends=Person("xulei",23,"IT");
friends.sayName();//xulei </script>
javascript——面向对象程序设计(3)的更多相关文章
- JavaScript 面向对象程序设计(下)——继承与多态 【转】
JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论 ...
- JavaScript面向对象程序设计:数组
或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的. 1. 创建数组 在J ...
- javascript面向对象程序设计系列(一)---创建对象
javascript是一种基于对象的语言,但它没有类的概念,所以又和实际面向对象的语言有区别,面向对象是javascript中的难点之一.现在就我所理解的总结一下,便于以后复习: 一.创建对象 1.创 ...
- [TimLinux] JavaScript 面向对象程序设计
1. 面向对象 面向对象语言有一个标志:都有类的概念.通过类可以创建任意多个具有相同属性和方法的对象.ECMAScript中没有类的概念,因此JavaScript中的对象夜雨基于类的语言中的面向对象有 ...
- javascript——面向对象程序设计(4)
<script type="text/javascript"> //1.继承 //2.原型链 //3.借用构造函数 //4.组合继承 //5.原型式继承 //6.寄生式 ...
- javascript——面向对象程序设计(2)
<script type="text/javascript"> //1.理解原型对象 //2.原型与in操作符 //3.更简单的原型语法 //4.原型的动态性 //5. ...
- javascript——面向对象程序设计(1)
<script type="text/javascript"> //ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值.对象或者函数” //理解对象 ...
- javascript面向对象程序设计
在学习js面向对象编程之前,首先须要知道什么是面向对象.面向对象语言都有类的概念,通过它能够创建具有同样属性和方法的对象.但js并没有类的概念,因此js中的对象和其它语言的对象有所不同. js对象能够 ...
- javascript 面向对象程序设计--深刻理解对象
javascript中,每个对象都是基于一个引用类型创建的,我们可以把ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...
随机推荐
- (转载)linux中shell变量
(转载)http://blog.csdn.net/zahuopuboss/article/details/8633891 为使shell编程更有效,系统提供了一些shell变量.shell变量可以保存 ...
- HDOJ 1081(ZOJ 1074) To The Max(动态规划)
Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectangle ...
- [2013 ACM/ICPC Asia Regional Hangzhou Online J/1010]hdu 4747 Mex (线段树)
题意: + ;];;;], seg[rt << | ]);)) * fa.setv;) * fa.setv;;], seg[rt << | ], r - l + );;, ...
- 钥匙计数之一 - HDU 1438(状态压缩打表)
分析:首先想到每个钥匙的结尾有4种状态,不过题目还需要判断有三种不同的钥匙深度,所以每种深度结尾后有2^4种状态,0000->1111,不过题目还需需要有相邻的钥匙深度大于等于3,所以需要两种不 ...
- eclipse的svn插件安装方式
eclipse的插件安装一般有3种方式: 1)通过eclipse的Help/ Install New Software...中, 点击Add, 添加一个在线更新地址,如:http://subclips ...
- Hibernate的游离态与持久态转换
在Hibernate中,一个PO可能经过长时间的操作,session已过时关闭,此时PO已经是一个游离态的对象,这时要转换为持久战态,有下面几种方法: 1.session.saveOrUpdate(o ...
- 转换 TColor 到 HTML 颜色串
//转换 TColor 到 HTML 颜色串 function ColorToHtml(color:TColor):string; var RgbColor : TColorRef; begin ...
- C程序中唯一序列号的生成
在实际的软件开发项目中.常常会涉及唯一序列号的生成.本文以一个实际的程序为例,介绍了唯一序列号的生成过程. 本文生成的序列号的样式为:MMDDHHMINSS_XXXXXX. 程序例如以下: /**** ...
- [转] Understanding Twitter Bootstrap 3
Bootstrap is a popular, open source framework. Complete with pre-built components it allows web desi ...
- BootStrap table 传递搜索参数
看bootStrap table文档不难发现它有一个queryparams属性,是向后台传递参数的,默认参数已有pageSize.pageIndex等,那么怎么传递自定义的参数呢?在网上找了好多也没有 ...