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 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...
随机推荐
- web.xml中的contextConfigLocation的作用
在web.xml中通过contextConfigLocation配置spring,contextConfigLocation 参数定义了要装入的 Spring 配置文件. 如果想装入多个配置文件,可以 ...
- Android学习笔记(三)Application类简介
每次运行APP时,Application类都保持实例化状态.与Activity不同,配置改变不会导致应用程序重启.通过继承Application类,可以完成一下3项工作: · 对Android运行时广 ...
- Struts1、Struts2和SpringMVC剖析【转载】
前段框架用了不少,今天就来做个总结.网上关于Struts1.Struts2.SpringMVC的文章有很多,这里的内容就是基于它们,来做个比较. 这三个框架是按照上面的顺序,依次出现的,它们都是对MV ...
- Java编程-基本语句
一个基本的输出语句: package Hello; import java.util.Scanner; public class Hello { public static void main(Str ...
- IntelliJ IDEA自用快捷键 转载
最常用快捷键- 未分类 command Binding Description defeat - Ctrl+/ 代码提示 No - Ctrl+Alt+L 格式化代码 - Ctrl+B 快速打开光标 ...
- ng-if与ng-show、ng-hide指令的区别和注意事项
http://blog.csdn.net/aitangyong/article/details/44701769
- vs2012关闭IDE硬件加速设置
对于我这样的老古董电脑是很有必要的设置! 如图所示:
- SVN太旧,要更新问题
同步或者提交的时候出现问题提示 The working copy needs to be upgradedsvn: Working copy 'E:\JAVA\Workspaces\uhr' is t ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(27)-权限管理系统-分配用户给角色
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(27)-权限管理系统-分配用户给角色 分配用户给角色,跟分配角色给用户操作是基本一致的. 打开模块维护,展 ...
- Python读写文件需要注意的地方 2015-03-31 23:19 69人阅读 评论(0) 收藏
<span style="font-family: 'Microsoft YaHei'; background-color: rgb(255, 255, 255);"> ...