位置: 编程技术 - 正文

关于JavaScript 原型链的一点个人理解(关于javascript函数)

编辑:rootadmin

推荐整理分享关于JavaScript 原型链的一点个人理解(关于javascript函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript基于原型,javascript的语句,javascript的原型,下列关于javascript的叙述正确的有,javascript基于原型,关于javascript的说法,下列关于javascript的叙述正确的有,关于javascript的说法,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript借鉴了许多语言的特点;例如语法类Java、函数借鉴Scheme、原型继承借鉴自Self、正则表达式借鉴于Perl。(DC Javascript:语言精粹)。

首先,每个JS是一门基于原型继承的面向对象的语言。里面数组是对象、函数是对象、“对象”当然还是对象。而且每个对象都有一个internal slot[[prototype]],这才是原型链连接起来的关键。诚然,我们可以为一个对象设置prototype property,但这又怎么样呢,这只是表象;后面暗藏杀机。

好,那我可以用isPrototypeOf()来检验某个对象是不是另一个对象的原型;然而这也是基于[[prototype]]链的。

举个例子:

下面的问题是foo.prototype是不是a的原型呢?!

这要分开来看:一方面a.prototype确实是{ name : "a.prototype"};但是,foo.prototype.isPrototypeOf(a)结果是true.

下面来看一看具体的关系:(使用--->表示不明显的[[prototype]]链,---表示prototype property关系)

Function ---> Function.prototype--->Object.prototype

关于JavaScript 原型链的一点个人理解(关于javascript函数)

Function.prototype <--- foo---foo.prototype ------>Object.prototype 。

另外,Number、Boolean、String等的[[protptype]]仍然是Fuction.prototype对象。Function.prototype对象为“function”,内部不含[[construct]]故而不可做构造函数用;实际上Function.prototype类似:function () {}。“function”类型除了[[prototype]]internal slot外,还有prototype属性。每个函数总是相伴有一个prototype对象:this.prototype = {constructor:this}(一个普通对象)。这个普通对象的[[prototype]]连接到Object.prototype.

那构造函数建立的实例对象的[[prototype]]是Object.prototype吗?

该实例的[[prototype]]是由构造函数的prototype property初始化的,注意不是函数的[[prototype]].所以如果是由Object这个函数构造的对象,那么就确实是.

Object是函数,它的prototype是大名鼎鼎的Object.prototype(有点废话的意思),但是它的[[prototype]]指向Function.prototype.请看下面:

Object----->Function.prototype------>Object.prototype.

如何改变这个[[prototype]]链呢?

可以采用var a = Object.create(obj)的形式,或Object.setPrototypeOf(objA,objB)的形式。我想例子就不用举了,因为关系很简单;况且我只举得出一些蹩脚的例子。没有意义。

最后一个问题,行为委托是基于[[prototype]]链吗?

是的,也是这样。

图解prototype、proto和constructor的三角关系 javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和cons

JS中使用DOM来控制HTML元素 1.getElementsByName():获取name.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`例:pname="pn"hello/ppname="pn"hello/ppname="pn"hello/pscriptfunctiongetName(){varcount=document.getElementsByName("pn");alert(cou

详细谈谈javascript的对象 javascript中有很多对象内容,挑几个感觉用的比较多的讲解。在网上学习一些和看javascript的学习手册。如果要这个手册的可以留言,看到了我就发给你。

标签: 关于javascript函数

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

上一篇:AngularJS 指令详细介绍(angular指令详解)

下一篇:图解prototype、proto和constructor的三角关系(纸嫁衣6攻略全文图解)

  • 城建税会计分录怎么写
  • 什么经营范围可以开茶叶发票
  • 连续亏损3年
  • 研发费用可以计入哪个科目
  • 本月缴纳增值税和上个月账本金额不对
  • 财务凭证和预算凭证目录只能有一条数据
  • 抵扣联多长时间的勾选认证
  • 物业公司可以开租赁发票吗
  • 复印的原始凭证可以作为记账依据吗
  • 结转产成品会计分录怎么做
  • 广告业与服务业哪个好
  • 预付租金就要交增值税吗
  • 补上年所得税加滞纳金入哪个科目?
  • 上海航交所官网
  • 怎么合理规范地避免企业涉税风险?
  • 企业可以同时按一般纳税和按小规模纳税吗?
  • 固定资产一次性计入费用的账务处理
  • 收到财付通打款认证冲减财务费用怎么做分录
  • 现金流量表怎么做
  • 社保缴费基数是什么意思,退休能拿多少
  • 联营企业分配利润
  • 工伤赔偿工伤保险超出部分
  • 让别公司开发票,不打款公账,可以不
  • 收到发票怎么入库
  • macbookpro怎么安装双系统
  • 现金流量套期的分录
  • 什么情形不属于经警告无效人民警察可以使用武器的情形
  • 餐饮业原料采购都包括哪些
  • 图神经网络gat
  • 最简单的上传php文件
  • 怎么理解php语言
  • php验证终端类型是什么
  • vue技术解密
  • 产成品核算的内容
  • 城镇土地使用税减免税政策2023年
  • 红字发票已开但红字发票信息表已核销待查证,怎么回事?
  • 当月扣缴的社保是上个月的吗
  • 发票纳税识别号和名称打印出来不齐怎么回事
  • 公司土地使用权可以自主转让吗
  • 开专票还是开发票
  • 企业合并财务报表
  • 小型微利企业计算企业所得税
  • 现金折扣方式销售货物不得从计税销售额中扣减折扣额
  • 企业固定资产没有加速折旧还填资产加速折旧表吗
  • 月销售额不超过15万的免征增值税
  • 无息的银行承兑汇票
  • 制造费用月末怎么结转到生产成本
  • 农民专业合作社是企业法人吗
  • 公司抽奖的成本怎么算
  • 多少钱算固定资产2022
  • 企业代购是什么意思
  • sql储存过程
  • 设备信息windows6.1
  • xp无法创建目录或文件
  • win7任务管理器是灰色的
  • dcs是什么文件
  • ubuntu系统安装教程
  • Windows(win7/win8/xp/2003)进入安全模式方法详细汇总
  • windows xp iis安装
  • linux批量处理文件
  • win1020h2正式版
  • linux的kill函数
  • win10非管理员账户开启管理员账户
  • win7怎么cmd
  • nodejs入门教程
  • 执行批处理命令
  • javascript 代码
  • easyui messager alert 三秒后自动关闭提示的实例
  • Android自定义控件开发入门与实战 百度网盘
  • 从零开始学公文写作
  • unity中ngui
  • android音乐播放器源代码
  • mac配置android开发环境
  • python flask 路由
  • 深入浅出jquery
  • 临时税务登记纳税有区域限制吗为什么
  • 北京朝阳税务局办税大厅
  • 浙江省工伤停工留薪期分类目录
  • 贵州省高新区属于哪个县
  • 西安税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设