Javascript:原型模式类继承

原型模式
每个函数(准确说不是类、对象)都有一个prototype属性,这个属性是一个指针,指向一个对象。
使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。
1.原型对象
(1)当创建一个新函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象。
(2)默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype属性所在函数  的指针。
(3)实例的内部包含一个指针,叫[[Prototype]]。不过这个指针对脚本则完全不可见(某些浏览器支持一种__proto__来访问)
2.代码读取属性顺序
首先搜索对象实例本身,没有则继续搜索指针指向的原型对象。
例:
function Person(){
}
Person.prototype.name="Javascript";
var p1 = new Person();
var p2 = new Person();  
p1.name="lufeng";
alert(p1.name);//"lufeng"
alert(p2.name);//"Javascript"
使用delete操作符可以完全删除实例属性。
isPrototypeOf():确定对象之间是否存在prototype关系
hasOwnProperty():检测一个属性是存在于实例中,还是存在原型中。
Object.keys()、Object.getOwnPropertyNames():接收一个对象作为参数,返回
一个包含所有可枚举属性的字符串数组。
来看个很蛋疼的类继承(某个HTML5游戏框架):
inherit : function(childClass, parentClass) {
var Constructor = new Function();
Constructor.prototype = parentClass.prototype;
childClass.prototype = new Constructor();
childClass.prototype.constructor = childClass;
childClass.superclass = parentClass.prototype;
if(childClass.prototype.constructor == Object.prototype.constructor) {
childClass.prototype.constructor = parentClass;
}
}
感觉代码看来比较乱,我画了个图:
原型模式 <wbr>类继承

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 学习经验分享

NET 20 周年的学习挑战赛刚结束了第⼀阶段&#xff0c;不知道各位⼩伙伴参加了没有&#xff1f;有⼈问现在学习 C# 是不是有点过时&#xff1f;也有⼈问现在C# 能做什么&#xff1f;更有⼈问学习 C# 能否找到⼯作 &#xff1f;或者你从不同的专家&#xff0c;不同的从业者可以有…

有限服务器延时计算_机房设备功率统计,UPS不间断电源和蓄电池的计算选择

当然了&#xff0c;也可以不用这么麻烦&#xff0c;网上有UPS计算器的&#xff0c;输入条件直接求个结果就行了。弱电笔记&#xff5c;弱电&#xff08;安防&#xff09;计算器诺&#xff0c;就上面那个&#xff01;下面进入正文&#xff1a;一个计算机机房有4台PC机&#xff0…

linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

云主机有两块硬盘&#xff0c;第一块硬盘盘一般为10G&#xff0c;用于安装系统&#xff0c;第二块磁盘根据云主机类型不同&#xff0c;大小也不相同。我们建议您在使用的时候第二块硬盘作为数据盘&#xff0c;存放你的网站数据&#xff0c;这样在您恢复系统的时候&#xff0c;数…

Visual Studio/SQL Server系统开发常见问题归纳

问题1.在利用C Sharp(操作系统为Windows7 64位)将Excel数据导入到SQL Server 2005中时,出现如下提示: 解决办法:VS菜单栏 生成→“配置管理器→平台→新建→x86。

Xamarin效果第十八篇之GIS中复合型Mark

在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里:1、关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓):https://restapi.amap.com/v3/airquality/aqilist?2、至于Mark无非就是用了CompositeSymbol:C…

WPF定时刷新UI界面

代码&#xff1a; using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Wi…

找不到libmmd.dll无法继续执行代码_300 行代码带你秒懂 Java 多线程!| 原力计划...

作者 | 永远在路上【】责编 | 胡巍巍出品 | CSDN博客线程线程的概念&#xff0c;百度是这样解释的&#xff1a;线程(英语&#xff1a;Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的…

苹果、联想及华硕均看准美国电脑运输的增长

据国外媒体雅虎金融报道&#xff0c;根据国际数据公司的研究&#xff0c;美国个人电脑在4Q14中下跌至1820万台&#xff0c;在4Q15中下跌至1740万台&#xff0c;跌幅4.3%。而苹果、联想和华硕的产品出货量却呈现上市趋势。苹果出货量上升8.9%&#xff0c;至220万台&#xff0c;华…

如何升级浏览器_前谷歌员工爆料:谷歌工程师们是如何合谋“杀死”IE6浏览器的...

浏览器在互联网中的地位可见一斑&#xff0c;甚至可以说&#xff0c;它是比搜索引擎和社交软件更强的流量入口。微软IE6当年在2001年作为Windows XP的默认浏览器发布&#xff0c;比Chrome首次发布还要早六年。 但是&#xff0c;谷歌Chrome却后来居上&#xff0c;如今的市场份额…

安卓设备刷linux发行版,绝对精华,大牛教你在Android系统上安装linux发行版

Install linux distribution(Debian/Ubuntu/Kali Linux/Fedora/openSUSE/Gentoo/RootFS/Arch Linux) on Android system在Android系统上安装linux发行版(Debian/Ubuntu/Kali Linux/Fedora/openSUSE/Gentoo/RootFS/Arch Linux)1、所用的手机类型为Samsung Note2 Verizon i6052、…

在 ASP.NET Core 中使用 HTTP 标头传播

前言我们常用 JWT 令牌用于身份验证&#xff0c;前端一般是在请求中包含 HTTP 标头 Authorization 实现。但是&#xff0c;当服务间需要互相调用时&#xff0c;也需要"按原样"将标头传播到目标服务。原来的解决方案是从请求中读取标头&#xff0c;并将其添加到对外请…

中英文标点符号切换的组合键_易混标点符号:一字线(—)、短横线(-)、浪纹线(~)...

前情提要&#xff1a;上次辨析了容易混淆的中英文冒号&#xff08;&#xff1a;、:&#xff09;、比号&#xff08;∶&#xff09;【点此查看】&#xff0c;这次继续介绍易混标点符号。易混标点符号&#xff1a;一字线&#xff08;—&#xff09;、短横线&#xff08;-&#xf…

Linux命令-网络命令:wall

wall hello word 向所有登录用户发送消息hello world root用户自己也会收到消息,wangyunpeng用户收到消息如下图:

win定时关机_两种方法让你设置电脑定时关机

方法一&#xff1a;利用计划程序步骤一&#xff1a;在开始菜单搜索框中输入计划任务&#xff0c;点击任务计划程序步骤二&#xff1a;点击操作再点击创建基本任务创建基本任务中输入名称和相关描述步骤三&#xff1a;触发器选择为每天&#xff0c;然后点击下一步步骤四&#xf…

AsyncEx - async/await 的辅助库

简介AsyncEx - async/await 的辅助库安装使用Nuget安装Nito.AsyncEx使用AsyncLock构造AsyncLock函数可以采用异步等待队列&#xff1b;传递自定义等待队列以指定您自己的排队逻辑。private readonly AsyncLock _mutex new AsyncLock(); public async Task UseLockAsync() {// …

dell设置从ssd启动_为什么懂电脑的人都说SSD不要分区?原来真相是这样!

最近韩博士打开电脑时发现开机速度真是越来越慢&#xff0c;从一开始的十秒左右到现在居然要一分多钟才能进入桌面&#xff01;果然是老了。花费一天的时间终于将电脑清理个干净&#xff0c;原以为能够缓解开机慢的情况&#xff0c;结果还是一样&#xff0c;等到地老天荒才看到…

数据切分——Atlas介绍

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上&#xff0c;修改了大量bug&#xff0c;添加了很多功能特性。目前该项目在360公司内部得到了广泛应用&#xff0c;很多MySQL业务…

在Arcmap中加载互联网地图资源的4种方法

在Arcmap中加载互联网地图资源的4种方法 前一段时间想在Arcmap中打开互联网地图中的地图数据&#xff0c;如影像数据、基础地图数据等&#xff0c;经过简单研究目前总结了四种方法&#xff0c;整理下与大家分享&#xff0c;有些内容可能理解有误&#xff0c;希望大家多多指教。…

iOS开发之手势识别

感觉有必要把iOS开发中的手势识别做一个小小的总结。在上一篇iOS开发之自定义表情键盘(组件封装与自动布局)博客中用到了一个轻击手势&#xff0c;就是在轻击TextView时从表情键盘回到系统键盘&#xff0c;在TextView中的手是用storyboard添加的。下面会先给出如何用storyboard…

WPF 基础控件之 GroupBox样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.ExpanderGroupBox控件修改Style需要注意使用Grid分两行进行展示第0行显示Header第1行显示Content。Header&#xff1a;添加Border并边框BorderThickness"1" 内部新增 ContentPresenter 然…