<!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. CodeForces - 589D —(思维题)

    Welcoming autumn evening is the best for walking along the boulevard and npeople decided to do so. T ...

  2. Spring+shiro配置JSP权限标签+角色标签+缓存

    Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量. 下面记录下sh ...

  3. 简单配置vps,防ddos攻击

    防人之心不可无. 网上总有些无聊或者有意的人.不多说了.上干货,配置vps apf防小流量ddos攻击. 对于大流量的ddos攻击, 需要机房的硬件防火墙,vps内部可能也扛不住. 1. 安装 DDo ...

  4. 使用Object.create()实现继承

    一.常见继承方式 我们日常开发中常见的继承方式主要有: 1.默认模式: Child.prototype = new Parent(); 2.借用构造函数: function Child(a, b, c ...

  5. cron和crontab

    crontab -l 列出目前的计划任务(时程表) crontab -e 编辑计划任务   计划任务的格式如下: f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时, ...

  6. VUE 学习笔记 三 模板语法

    1.插值 a.文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值 <span>Message: {{ msg }}</span> v-once ...

  7. ASP.NET Core IdentityServer4 新手上路

    OAuth2.0资料 今天看到一篇博主写了该系列文章,贴图和过程都比较详细,俗话说实践是检验真理的唯一标准(如果是按照参考文章复制粘贴,应该不会出现踩坑,但是我喜欢自己手动敲一遍),发现几个坑,因而总 ...

  8. 开源应用框架BitAdminCore:更新日志20180903

    索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:https://www.bitadmincore.com 框架源码:https://github.com/chenyi ...

  9. WPF文字间距

    代码: <ItemsControl ItemsSource="{Binding Info}" FontFamily="微软雅黑" FontSize=&qu ...

  10. Promise之你看得懂的Promise

    本文由作者陈旭锋(任职网易考拉)授权网易云社区发布. Promise源码详解 学习知识要善于思考,思考,再思考. -- 爱因斯坦 1.回调地狱 曾几何时,我们的代码是这样的,为了拿到回调的结果,不得不 ...