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 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...
随机推荐
- JavaScript高级程序设计21.pdf
第10章 DOM DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口) IE中所有DOM对象都是以COM对象的形式实现的,这意味着IE中的对象与原生JavaScript对象 ...
- linux trap
- struts2 最新S2-016-S2-017漏洞通杀struts2所有版本及修复方法
详情查看http://zone.wooyun.org/content/5159 官方漏洞说明 http://struts.apache.org/release/2.3.x/docs/s2-016.ht ...
- Abator自动生成ibatis的相关配置和类
一.abator自动生成配置: abator自动生成ibatis的配置文件.mode.sqlMap.dao.bean实例 准备: 1.安装Eclipse插件: 要求eclipse3.1, ...
- android生成二维码
新建项目 布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别. 首先需要一个谷歌的一个jar包 activi ...
- VMware-workstation-full-12.0.1-3160714
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.0.1-3160714.exe 5A02H-AU2 ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
在了解了PhoneGap中都有哪些事件之后,本节将開始对这些事件的使用方法进行具体地介绍.本节要介绍的是程序载入事件,也就是deviceready.pause和resume这3个事件. [范例4-2 ...
- POJ 2750 Potted Flower
Potted Flower Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3872 Accepted: 1446 Des ...
- iOS--为视图添加阴影
iOS–为视图添加阴影 情况一:视图添加圆角,在添加阴影 //阴影视图 self.viewShadow = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ...
- Visual Studio 调试技巧 -- 为 Lambda 表达式设置中断
如果我说 .NET 世界上最厉害的开发平台(语言),资深的同仁肯定不会往下看了,因为这将是一个无休止的争论,到头来搞不好还是人身攻击.然而,如果我说 Visual Studio 是世界上最友好最强大的 ...