位置: 编程技术 - 正文

深入理解JavaScript编程中的原型概念(深入理解javascript特性.pdf)

编辑:rootadmin

推荐整理分享深入理解JavaScript编程中的原型概念(深入理解javascript特性.pdf),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解javascript特性,深入理解新发展理念,推进供给侧结构性改革 心得体会,深入理解javascript特性,深入理解javascript,深入理解新发展理念,深入理解javascript,深入理解javascript,深入理解javascript特性.pdf,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript 的原型对象总是让人纠结。即使是经验丰富的JavaScript专家甚至其作者,经常对这一概念给出很有限的解释。我相信问题来自于我们对原型最早的认识。原型总是与new, constructor 以及令人困惑的prototype属性紧密联系。事实上,原型是一个相当简单的概念。为了更好地理解它,我们需要忘记我们所‘学到'的构造原型,然后,追本溯源。

什么是原型?

原型是一个从其他对象继承属性的对象。

是不是任何对象都可以是原型?

是的

那些对象有原型?

每个对象都有一个默认的原型。原型本身就是对象,每一个原型本身也存在一个原型。(只有一个例外,默认的对象原型在每条原型链的顶端,其他的原型在原型链的后面)

退一步说,什么又是对象呢?

在JavaScript中一个对象是以键值对保存的任意的无序集合,如果它不是原始类(undefined,null,boolean.nuber或string),它就是一个对象。

你可以认为每个对象都有一个prototype. 但当我写({}).prototype的时候,我却得到了undefined,你疯不疯?

忘记你所掌握的关于prototype属性的理解 - 这很可能是迷惑的根源. 一个对象真正的prototype是内部[[Prototype]]属性. ECMA 5介绍了标准的访问方法,Object.getPrototypeOf(object)。这个最新的实现已被Firefox, Safari, Chrome and IE9所支持. 另外,除了IE,所有的浏览器都支持非标准的访问方法__proto__.不然的话,我们只能说对象的构造方法就是它的prototype属性.

很好, false 是原始类型, 为什么false.__proto__ 会返回一个值呢&#;

当访问原始类型的原型(prototype),它会强制转化为一个对象。

我想使用原型实现继承,我现在该怎么做?

给一个实例添加原型属性,几乎是没有意义的.除非一种情况,那就是,很有效率的添加属性直接到实例本身.假设我们已经有了一个对象,要共享已经存在的对象的功能.例如Array,我们可以这样做

但是我们可以看到原型的真正强大在于多个实例共享同一原型。原型对象的属性只被定义一次就可以被它引用的所有实例所继承。使用原型对性能和程序可维护性的提高效果是很显而易见的。那么这就是构造函数产生的原因吗?是的,构造函数提供了一个便捷的跨浏览器机制来实现对实例创建时的公用原型分配。。

在给出一个例子之前,我需要知道constructor.prototype property是干什么的&#;

深入理解JavaScript编程中的原型概念(深入理解javascript特性.pdf)

好吧,首先,JavaScript不区分构造函数和其它方法,所以每个方法都有prototype属性。反而任何不是方法的,都没有这样的属性。

现在可以定义: 一个方法的prototype属性是当这个方法被用作构造函数来创建实例时赋给该实例的prototype的对象。

非常重要的一点是,要理解方法的prototype属性和实际的prototype没有任何关系。

能给个例子不?

以下的代码,可能你已经看到或用过上百次了,但这里又把它搬上来了,但可能会有些新意。

这很棒。如果我改变了constructor的prototype属性,即使是已存在的实例对象也可以立刻访问新的prototype版本吗?

嗯......不完全是。如果我修改的是现存prototype的属性后,那么确实是这种情况,因为对象创建时a.__proto__引用了A.prototype所定义的对象。

但是如果我将prototype属性用一个新对象代替,a.__proto__ 仍然指向原始对象。

一个缺省的prototype是什么样的?

一个拥有constructor属性的对象。

instanceof与prototype有啥关系?如果A的prototype属性出现在a的原型链中,则表达式a instanceof A会返回true。这意味着我们可以欺骗instanceof,让它失效。

那么我还能利用原型干些其它的什么事儿?

记得我曾经说过每一个构造器都拥有一个prototype属性,利用该属性可以将原型赋值给所有由构造器产生的实例?其实这同样适用于本地构造器,例如Function和String。通过扩展(而不是替换)这个属性,我们可以更新每个指定类型对象的prototype。

告诉我更多关于继承与原型是怎么工作的。原型链又是什么东东?

因为每个对象和每个原型(本身)都有一个原型,我们可以想象, 一个接一个的对象连接在一起形成一个原型链。 原型链的终端总是默认对象(object)的原型。

原型继承机制是内在且隐式实现的。当对象a要访问属性foo时,Javascript会遍历a的原型链(首先从a自身开始),检查原型链的每一个环节中存在的foo属性。如果找到了foo属性就会将其返回,否则返回undefined值。

直接赋值会咋样?

当直接为对象属性赋值时,原型继承机制就玩不转了。a.foo='bar'会直接赋值给a的foo属性。要想为原型对象的属性赋值,你需要直接定位原型对象的该属性。关于javascript原型就讲全了。我觉得对于原型概念的理解,我把握的还是比较准确的,但是我的观点无论如何也不是最后的结果。请随便告之我的错误之处或提出和我不一致的观点。

JavaScript的RequireJS库入门指南 简介如今最常用的JavaScript库之一是RequireJS。最近我参与的每个项目,都用到了RequireJS,或者是我向它们推荐了增加RequireJS。在这篇文章中,我将描述Requ

javascript处理a标签超链接默认事件的方法 本文实例讲述了javascript处理a标签超链接默认事件的方法。分享给大家供大家参考。具体分析如下:有时需要在a标签上添加click事件,并且跳转前处理一

优化RequireJS项目的相关技巧总结 本文将演示如何合并与压缩一个基于RequireJS的项目。本文中将用到苦干个工具,这其中就包括Node.js。因此,如果你手头上还没有Node.js可以点击此处下载

标签: 深入理解javascript特性.pdf

本文链接地址:https://www.jiuchutong.com/biancheng/379071.html 转载请保留说明!

上一篇:Backbone.js 0.9.2 源码注释中文翻译版

下一篇:JavaScript的RequireJS库入门指南

  • 个人所得税退税操作流程
  • 非居民个人如何认定
  • 疫情期间餐饮发票税点
  • 政府返还的个税怎么算
  • 预收贷方余额表示什么意思
  • 实缴注册资本交税吗
  • 厂区打地坪会计怎么做账
  • 投资收益企业所得税优惠政策
  • 资产减值损失属于什么科目借方增加还是减少
  • 固定资产明细账怎么填
  • 抵扣认证发票时间
  • 计提本月工会经费计提基数
  • 研究开发费用加计扣除多少
  • 代扣代缴手续费企业所得税
  • 办公费税前扣除标准2022最新
  • 合伙企业个人所得税经营所得税率
  • 销售方销售折让的会计处理
  • 长期借款费用资本化
  • 出差报销差旅
  • 建筑服务简易征收可以开专票吗
  • 政府补贴的银行卡注销了会怎么样
  • 鼠标反应迟钝是什么原因
  • 生育津贴报销需要准生证吗
  • 项目不可用怎么解决
  • u启动pe装机工具如何重装系统win10
  • mac怎么共享文件
  • 不知道哟
  • PHP:ftp_delete()的用法_FTP函数
  • 消费税的计税方法有
  • vue3全局属性
  • vue 使用高德地图
  • 财税[1994]26号
  • 其他债权投资如何进行投资收益的确认的核算?
  • 原材料按计划成本核算例题
  • 读懂spring源码
  • vue-axios详细介绍
  • 开源原则
  • python颜色代码有哪些
  • 固定资产减值损失属于营业外支出吗
  • 工程发票可以开清单吗?
  • c语言fread函数的用法示例
  • access使用查询向导固定常数
  • 房屋租赁发票品目填写规范
  • asp 数据库
  • mysql常用语
  • 典当行必须出具当票吗
  • 母公司和子公司是什么关系
  • 委托加工业务中需要计算缴纳增值税销项税
  • 专项应付款的会计处理
  • 暂估成本结转后需要冲回吗
  • 非居民企业所得税征收方式鉴定表
  • 来料加工和进料加工的相同之处
  • 认缴制下实收资本可以减少吗
  • 投资主体将其拥有的货币或产业资本
  • 票面利率大于市场利率,则发行价格一定( )面值
  • 当月增加的固定资产当月不计提折旧
  • 小规模附加税优惠政策最新2023
  • 财务费用的科目编码是多少
  • 项目成本的估算与预算有什么区别和联系?考试资料网
  • 拆除费计入哪个科目
  • 实收资本能直接转账吗
  • 其他费用包括哪些内容
  • sql 修改表的字段名称
  • mysql安装与配置的步骤与常用命令
  • 巧妙设置Vista任务栏和开始菜单的属性
  • win8最新版本
  • ubuntu14.04升级
  • ubuntu operation not permitted
  • windows8怎么更新到最新版本
  • centos设置永不待机
  • 苹果电脑装win7键盘无法使用
  • win8界面什么样
  • 如何用u盘安装win8操作系统
  • [置顶]津鱼.我爱你
  • android四大组件生命周期
  • javascript类的继承
  • node.js利用cas实现单点登录
  • androidapplication
  • android camera setParameters failed 类问题分析总结
  • 水资源税征收标准2022
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设