位置: 编程技术 - 正文

关于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攻略全文图解)

  • 进口商品需要缴纳哪些税
  • 财税实务与核算会计的区别在哪里?
  • 所得税税前扣除凭证管理办法
  • 进口货物增值税的组成计税价格是
  • 发票在系统里作用大吗
  • 保险政保业务
  • 已申报个税减免什么意思
  • 增值税负数发票可以作废吗?
  • 出售使用过的生产设备
  • 已经发生的费用
  • 地产公司土地分摊方案
  • 其他货币资金贷方是增加还是减少
  • 员工工伤保险报销走什么科目
  • 企业收到非金融机构利息收入怎么做账务处理
  • 非生产企业主营业务成本
  • 印花税资产划转
  • 增值税专用发票和普通发票的区别
  • 通过检查人力资源
  • 股票授予代替工资缴税吗?
  • 银行汇票的背书转让金额
  • 误工费保险公司全部付吗
  • 企业所得税减免税额计算公式
  • 增值税普通发票有什么用
  • 计提固定资产折旧
  • 奖金扣税标准税率表
  • 商场收取租金要缴纳哪些税
  • 剑灵怎么截图正版
  • 债务转换为资本
  • mysql实现事务
  • 福利企业增值税即征即退会计处理
  • php中常见的错误类型有
  • ai 绘画原理
  • 增值税发票丢失罚款多少
  • 借款凭证会计分录是什么
  • linux清理文件内容
  • 小规模纳税人每月不超过10万
  • 回购股票并注销影响所有者权益吗
  • 房地产公司土地计入什么科目
  • 业务招待费的会计处理方法
  • 托盘入账哪个科目最好
  • 简易征收适用哪些业务租赁
  • SQL SERVER 2000 9003错误的解决方法(只适用于SQL2000)
  • mysql数据库连接方式
  • var文件是什么意思
  • 以前年度买的固定资产一直未入账,现在还能入账吗?
  • 收客户货款怎么说话
  • 买药费用应计入什么科目
  • 财务单独核算是什么意思
  • 商品流通企业会计
  • sql删除多条记录
  • sql ntext数据类型字符替换实现代码
  • mysql数据库定时备份脚本
  • sql2005 存储过程 某个字段小于某个值时变颜色
  • 微软宣布Q3推出MRTKV3工具包
  • linux虚拟局域网搭建
  • 索尼笔记本电脑怎么进入bios设置
  • winxp升级win7失败怎么办
  • ubuntu touch怎么刷入
  • PRISMSVR.EXE - PRISMSVR是什么进程 有什么用
  • reminder.exe - reminder是什么进程 有什么用
  • win10系统光驱
  • win7玩游戏全屏
  • cocos2djs
  • javascript 基础
  • jquery邮箱正则表达式
  • msoobe命令
  • lessons there是什么意思
  • cocos2dx运行原理
  • 游戏开发那些事
  • 用python写一个学生信息管理系统
  • shell脚本 su
  • Unity3D中的事件处理
  • javascript页面布局
  • 用python做
  • Python实现类似jQuery使用中的链式调用的示例
  • 福建省国家税务局电子税务局官网入口
  • 预缴的增值税怎么做账务处理
  • 成都交通官网限号查询系统
  • 税务核查是什么意思
  • 长春市医保社保什么时候年检
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设