<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js高级语法3-原型模式 </title>
</head>
<body>
<script>
/*
javascript原型模式(prototype):
1. 原型是一个对象,其他对象可以通过它实现属性的继承,所有的对象在默认的情况下都有一个原型。
因为原型的本身也是对象。所以一个类的真正原型是被类的内部的prototype属性所持有。
2.什么可以称之为对象?
在javascript中,一个对象就是任何的无序的键值对的集合。
如果他不是一个主数据类型(undefined,null,boolean,number,string)
其他的通通叫做对象
*/ /*
javascript中的原型是和函数紧密连接的;
var o ={} 他不是用function定义的,他有原型吗?
有。
每个通过函数和new操作符生成出来的对象都持有一个属性 __proto__,这个属性
保存了创建他的构造函数的prototype的原型引用。
* */
/*
function Person(){} // 定义一个空对象
Person.prototype.name="张三";
Person.prototype.showName=function(){
//这个this表示调用本函数的一个具体实例化的类
alert(this.name);
}
new Person().showName(); var cat = {};
// cat.prototype.name="112";//报错,prototype未定义
//默认隐藏的调用下面的代码:
Object.getPrototypeOf(cat).name="zhangdan"; //这是获取隐藏原型的方法,浏览器支持度不好
cat.__proto__.master = "javascript";
//上边两个是显式调用,下面是隐式调用,作用是一样的
cat.age=2;
cat['sex']="man"; alert(cat.name+" "+cat.master+" "+cat.age+" "+cat["sex"]);
*/
//利用原型模式实现简单继承
function per(){
this.getName = function(str){
alert(str);
}
}
per.prototype.getAge = function(age){
alert(age);
}
//不完全继承
var a = {};//空类
a.__proto__ = per.prototype;
//把要被继承的原型引用,赋值给要继承的类,相当于一个挂载
//如果要继承的类是一个空类,那么就会完全继承
a.getAge(3);
//a.getName("张丹"); //这个方法 报错,因为继承的是原型,也就是上一级的所有东西,
//但是不包括被继承类自身定义的属性和方法 //简单方式实现继承(js中无法实现多继承)
//完全继承
var b = {};
b.__proto__ = new per();
b.__proto__.constructor = b;
b.getAge(9);
b.getName("xiaowang"); //串联继承
function m(){
this.showM = function(){
alert("I am is M ")
}
}
function n(){
this.showN = function(){
alert("I am is N ")
}
} function k(){};
n.prototype = new m();
n.prototype.constructor = n; k.prototype = new n();
k.prototype.constructor = k;
var boo = new k();
boo.showM();
boo.showN();
</script>
</body>
</html>

JavaScript设计模式-3.原型模式的更多相关文章

  1. 再起航,我的学习笔记之JavaScript设计模式09(原型模式)

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...

  2. JavaScript设计模式 (1) 原型模式

    原型模式(Prototype):用原型实例指向创建类对象,使用于创建新对象的类共享原型对象的属性以及方法. //图片轮播类 var LoopImages = function (imgArr, con ...

  3. Javascript设计模式之原型模式、发布订阅模式

    原型模式 原型模式用于在创建对象时,通过共享某个对象原型的属性和方法,从而达到提高性能.降低内存占用.代码复用的效果. 示例一 function Person(name) { this.name = ...

  4. JavaScript设计模式之----组合模式

    javascript设计模式之组合模式 介绍 组合模式是一种专门为创建Web上的动态用户界面而量身制定的模式.使用这种模式可以用一条命令在多个对象上激发复杂的或递归的行为.这可以简化粘合性代码,使其更 ...

  5. 设计模式_11_原型模式(prototype)深拷贝、浅拷贝

    设计模式_11_原型模式(prototype) 浅拷贝: package designPatternOf23; /** * 定义:用原型实例,指定创建对象的种类,并通过拷贝这些原型创建新的对象 * P ...

  6. C#设计模式(6)——原型模式(Prototype Pattern)

    一.引言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在 ...

  7. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

    原文:乐在其中设计模式(C#) - 原型模式(Prototype Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:weba ...

  8. js原生设计模式——7原型模式之真正的原型模式——对象复制封装

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. C#设计模式之六原型模式(Prototype)【创建型】

    一.引言 在开始今天的文章之前先说明一点,欢迎大家来指正.很多人说原型设计模式会节省机器内存,他们说是拷贝出来的对象,这些对象其实都是原型的复制,不会使用内存.我认为这是不对的,因为拷贝出来的每一个对 ...

随机推荐

  1. flume学习以及ganglia(若是要监控hive日志,hive存放在/tmp/hadoop/hive.log里,只要运行过hive就会有)

    python3.6hdfs的使用 https://blog.csdn.net/qq_29863961/article/details/80291654 https://pypi.org/  官网直接搜 ...

  2. FTP服务器的搭建与安全配置

    FTP可以说是Internet上使用非常广泛的一种通讯协议了.它工作在OSI模型的第7层,是TCP/IP的一种具体应用.FTP采用基于TCP的可靠连接:监听21端口来等待控制连接请求,当连接建立后,采 ...

  3. layou split 属性

    layou split:true -  显示侧分栏

  4. [C#学习笔记]C#中的decimal类型——《CLR via C#》

    System.Decimal是非常特殊的类型.在CLR中,Decimal类型不是基元类型.这就意味着CLR没有知道如何处理Decimal的IL指令. 在文档中查看Decimal类型,可以看到它提供了一 ...

  5. JAVA—编码问题

    一.编码.(引用  百度百科) 编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码.用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲信号 ...

  6. (转)Struts2返回JSON数据的具体应用范例

    转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  7. 用TIdIPWatch获取本地IP

    Indy的“indy misc”下有一个“TIdIPWatch”组件,可以正确获得本地IP,即使有多块网卡,也可以正确获得真正本地IP. 一,引入单元文件“IdIPWatch”. 二,实际代码: pr ...

  8. MySql数据库备份的几种方式

    mysqldump工具备份 备份整个数据库 $> mysqldump -u root -h host -p dbname > backdb.sql 备份数据库中的某个表 $> mys ...

  9. 【Oracle 12c】最新CUUG OCP-071考试题库(58题)

    58.(16-1) choose the best answer: Examine the structure of the BOORSTRANSACTIONS table: Examine the ...

  10. linux 下的 crontab 定时任务工具

    以下内容转自:https://www.cnblogs.com/longjshz/p/5779215.html 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep c ...