位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享关于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攻略全文图解)

  • 小型微利企业所得税怎么计算
  • 代销返点怎么交税费
  • 印花税和契税是什么意思?什么时候交?
  • 产权转移书据印花税包括什么
  • 国外收到怎么说
  • 开办费的帐务处理
  • 公司破产债务清偿顺序是怎样的
  • 个体工商户在哪注销营业执照
  • 进项税转出的发票怎么认证
  • 处理报废的固定资产
  • 未收到增值税专用发票
  • 利润分配亏损太多如何处理?
  • 个人独资所得税税率表最新
  • 转账支票签章如何盖及相关注意事项
  • 残保金申报表怎么作废
  • 营改增后还要交企业所得税吗
  • 收到多开发票已认证怎么做账?
  • 补交注册资本的法律规定
  • 研发支出辅助账2021版
  • 现金折扣应不应计入成本
  • 生产型企业一般会有哪些外来文件
  • 种子销售公司
  • 金融资产交易中心是干嘛的
  • 以前固定资产入账折旧怎么提
  • 房租税收怎么算?
  • 发放的工资比计提的多怎么办
  • 1697510490
  • 结转存货跌价准备冲减主营业务成本
  • 小企业会计准则成本核算方法选什么
  • 建安企业享受的税收优惠2020年
  • 小微企业免税的会计分录怎么写
  • 怎么认定是否为包工头
  • 民办非企业的注册资金最低限额
  • 期间费用属于间接生产费用吗
  • 企业因政策性原因发生的巨额经营亏损
  • 微信小程序获取手机号
  • 实习生究竟该怎么缴个税?
  • 原材料按实际成本核算需设置的科目包括
  • curl error6
  • 代开开增值税专票和自己开有什么区别
  • 科目余额表和资产负债表的金额不一致的原因
  • vue3.0教程
  • docker管理系统
  • 进口货物的账务处理办法
  • 金税四期对建筑企业的影响
  • 客户多付款不要了,多出这部分是哪种收入
  • 预收货款开具专用发票
  • sqlserver数据库获取当前时间
  • 库存,收入,支出,进货
  • 公对公转账货款写成了往来款怎么办
  • 增值税涉及的税目有哪些
  • 营业费用占比
  • 企业实收资本的用途
  • 销售开票怎么做会计分录
  • 利润总额毛利润怎么算
  • 班车租赁发票税率是多少
  • 公司增资怎么办理手续
  • 金融企业借款费用扣除比例
  • mysql存emoji表情
  • win8系统界面切换成win7
  • server2003定时任务
  • linux常用命令sed
  • 笔记本没有光驱怎么加装固态硬盘
  • linux磁盘管理fdisk
  • winhost.exe - winhost是什么进程
  • 在bootstrap中,有哪几种导航
  • js怎么用jquery
  • javascript语言介绍
  • html淘宝搜索框代码
  • 使用jquery mobile时,jquery文件必须
  • 前方高能(莞尔wr)晋江
  • js日期格式转换
  • javascript编程技术
  • js遍历foreach
  • 国家税务总局电子发票
  • 高新技术企业认定
  • 百旺金赋天津客服电话
  • 车辆购置税退税需要什么资料
  • 经济补偿金如何计税
  • 丰田2.0和2.5混动发动机
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号