js原型链是什么

原型链是一种机制,指的是javascript每个对象包括原型对象都有一个内置的[[proto]]属性指向创建它的函数对象的原型对象,即prototype属性。

js原型链是什么

作用:原型链的存在,主要是为了实现对象的继承。

关于原型链的几个概念:

1、函数对象

在JavaScript中,函数即对象。

2、原型对象

当定义一个函数对象的时候,会包含一个预定义的属性,叫prototype,这就属性称之为原型对象。

//函数对象function F(){};console.log(F.prototype)

登录后复制

6a.jpg

3、__proto__

JavaScript在创建对象的时候,都会有一个[[proto]]的内置属性,用于指向创建它的函数对象的prototype。原型对象也有[[proto]]属性。因此在不断的指向中,形成了原型链。

举个例子来说,我们将对象F的原型对象修改一下,就可以清楚看到上述的关系

//函数对象function F(){};F.prototype = {    hello : function(){}};var f = new F();console.log(f.__proto__)

登录后复制

6b.jpg

4、new

当使用new去调用构造函数时,相当于执行了

var o = {};o.__proto__ = F.prototype;F.call(o);

登录后复制

因此,在原型链的实现上,new起到了很关键的作用。

5、constructor

原型对象prototype上都有个预定义的constructor属性,用来引用它的函数对象。这是一种循环引用。

function F(){};F.prototype.constructor === F;

登录后复制

在实际运用中,经常会有下列的写法

function F(){};F.prototype = {    constructor : F,    doSomething : function(){}}

登录后复制

这里要加constructor是因为重写了原型对象,constructor属性就消失了,需要自己手动补上。

6、原型链的内存结构

function F(){    this.name = 'zhang';};var f1 = new F();var f2 = new F();

登录后复制

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

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

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

(0)
上一篇 2025年3月8日 00:15:23
下一篇 2025年3月8日 00:15:31

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

相关推荐

  • 前端用nodejs能做什么

    node.js是一种能够在服务器端运行javascript,并且可以开放源代码,以及跨平台运行javascript的一种运行环境。有人问,前端用nodejs能做什么?想知道答案你得先了解什么是nodejs,下面一起了解一下吧。 Node.j…

    2025年3月8日
    200
  • js代表什么

    在日常的生活中,有很多单词的缩写都有多种含义。尤其在计算机行业的缩写更是多种多样,下面我将带大家了解一个缩写为js的行业名词,javascript。 JavaScript(通常缩写为JS)是一种高级的、解释型的编程语言。 JavaScrip…

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

    在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。 闭包的概念 闭包就是能够读取其他函数内部变量的函数。 由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,…

    2025年3月8日
    200
  • js为什么回调?

    在javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用。既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回。因为函数是第一类对象,我们可以在javasc…

    2025年3月8日
    200
  • js底层是什么语言

    众所周知,javascript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。而又因为它的名字前面包含java,就有很多人就认为它是用java语言编写的,但实际上并非如此。 说到这里,就不得不提出关于javasc…

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

    什么是class 类? MDN上说,类定义对象的特征。它是对象的属性和方法的模板定义。简单说,“类”是生产对象的模板,通过类这个模板,可以毫不费劲地生产出无数个一样的对象,而不用通过一次次的定义去声明对象。而这些对象,因为具有一样的属性、一…

    2025年3月8日
    200
  • 在js中eval什么意思

    定义和用法: eval()函数可计算某个字符串,并执行其中的JavaScript代码。 语法: eval(string) 参数string: 必需要有。要计算的字符串,其中含有要计算的JavaScript表达式或要执行的语句。 返回值: 通…

    2025年3月8日
    200
  • vue和node是什么关系

    并没有关系,vue是前端框架,算是js的三大框架之一吧,node是后端开发语言,同php、java、c#一样的。但是他们可以配合使用。 Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PH…

    2025年3月8日
    200
  • js为什么要构造函数

    使用构造函数构造可以复用的对象 JS中的函数即可以是构造函数又可以当作普通函数来调用,当使用new来创建对象时,对应的函数就是构造函数,通过对象来调用时就是普通函数。 构造函数就是你构造出来的函数,是一种特殊的方法,与普通函数有着质的区别,…

    2025年3月8日
    200
  • 微信js是什么

    微信js-sdk是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为…

    2025年3月8日
    200

发表回复

登录后才能评论