js中什么是原型链

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含指向原型对象内部的指针。我们让原型对象的实例(1)等于另一个原型对象(2),

此时原型对象(2)将包含一个指向原型对象(1)的指针,

再让原型对象(2)的实例等于原型对象(3),如此层层递进就构成了实例和原型的链条,这就是原型链的概念

js中什么是原型链

原型链

每个构造函数都有原型对象,每个构造函数实例都包含一个指向原型对象的内部指针(proto),如果我们让第一个构造函数的原型对象等于第二个构造函数的实例,结果第一个构造函数的原型对象将包含一个指向第二个原型对象的指针,再然第三个原型对象等于第一个构造函数的实例,这样第三个原型对象也将包含指向第一个原型对象的指针,以此类推,就够成了实例于原型的链条,这就是原型链的基本概念

function One(){ } function Two(){ } function Three(){ } Two.prototype=new One(); Three.prototype=new Two(); var three=new Three(); console.log(three); console.log(three.__proto__===Three.prototype) //true console.log(three.__proto__.__proto__===Two.prototype) //true console.log(three.__proto__.__proto__.__proto__===One.prototype)  //true console.log(three.__proto__.__proto__.__proto__.__proto__===Object.prototype)  //true

登录后复制

在对象实例中,访问对象原型的方法

1、使用proto属性

此属性是浏览器支持的一个属性,并不是ECMAScript里的属性

2.Object.getPrototypeOf

3.使用constructor.prototype的方法

对于不支持proto的浏览器,可以使用constructor,访问到对象的构造函数,在用prototype访问到原型

使用原型链解释ANUGLAR作用域

在开发过程中,我们可能会出现控制器的嵌套,看下面这段代码:

  
        {{a}}         
            {{a}}         
     
     function OuterCtrl($scope) { $scope.a = 1; } function InnerCtrl($scope) { }

登录后复制

我们可以看到界面显示了两个1,而我们只在OuterCtrl的作用域里定义了a变量,但界面给我们的结果是,两个a都有值,现在自控制器里的a是从父控制器里继承过来的

我们可以父子级的作用域看成两个原型对象,其中一个原型对象继承另一个原型对象的实例

以上就是js中什么是原型链的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2730423.html

(0)
上一篇 2025年3月8日 00:16:56
下一篇 2025年1月4日 01:22:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • js怎么判断某一个checked

    js判断input checked是否被选中代码实例 checked 属性设置或返回 checkbox 是否应被选中。 语法 checkboxObject.checked=true|false 登录后复制 该属性保存了 checkbox 的…

    2025年3月8日
    200
  • js中remove怎么用

    remove() 方法用于从下拉列表删除选项。 语法 selectObject.remove(index) index — 必需:规定要删除的选项的索引号。 说明 该方法从选项数组的指定位置移除 元素。如果指定的下标比 0 小,…

    2025年3月8日
    200
  • JS怎么比较两个字符串

    javascript中的字符串比较 大于(>), 小于( javascript字符串在进行大于(小于)比较时,会根据第一个不同的字符的ascii值码进行比较,当数字(number)与字符串(string)进行比较大小时,会强制的将数字…

    2025年3月8日
    200
  • d3js是什么

    近年来,可视化越来越流行,许多报刊杂志、门户网站、新闻、媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解,有一句谚语“一张图片价值于一千个字”,的确是名副其实。各种数据可视化工具也如井喷式地发展,d3 正是其中的佼佼者。 D3…

    2025年3月8日
    200
  • d3js怎么样

    d3 的全称是(data-driven documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其实就是一个 javascript 的函数库,使用它主要是用来做数据可视化的。 D3 有多受欢迎 D3 是一个…

    2025年3月8日
    200
  • js怎么格式化日期

    1.将日期转换为指定的格式 比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。当然是网上的方法,只是总结下。 可以为Date原型添加如下的方法: Date.prototype.forma…

    2025年3月8日
    200
  • js中怎么写正则表达式

    正则表达式(英语:regular expression,在代码中常简写为regex、regexp或re)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 搜索模式可用于文本搜索和文本替换。 正则表达式是由一个字符序列形成的…

    2025年3月8日
    200
  • js代码怎么注释

    javascript 注释用于解释 javascript 代码,增强其可读性。 JavaScript 注释也可以用于在测试替代代码时阻止执行。 单行注释 单行注释以 // 开头。 任何位于 // 与行末之间的文本都会被 JavaScript…

    2025年3月8日
    200
  • 怎么用js获取年月日

    获取年、月、日和将时间戳转换成日期格式 // 简单的一句代码var date = new Date(时间戳); //获取一个时间对象/** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 2. 更多好用的方法可以在这查到…

    2025年3月8日
    200
  • js中obj是什么

    javascript 变量是数据值的容器。 这段代码把一个单一值(porsche)赋给名为 car 的变量: var car = “porsche”; 对象也是变量。但是对象包含很多值。 这段代码把多个值(porsc…

    2025年3月8日
    200

发表回复

登录后才能评论