简单易懂的JavaScript原型以及原型链

本文介绍了JavaScript中的核心概念,如函数、构造函数、对象、实例对象,重点解析了prototype、__proto__和constructor之间的关系。每个函数都有prototype属性,指向原型对象,而对象的__proto__指向构造函数的prototype。constructor是原型对象上的属性,指回构造函数。通过这些概念构建了原型链,它是JavaScript继承的基础。
摘要由CSDN通过智能技术生成

开始

一文带你进入JavaScript中的奥秘之处

术语了解

  1. 函数(构造函数(方法))

    //用来构造对象的函数
    //通过 function 关键词进行定义,其后是函数名和括号 ()。
    //函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
    //圆括号可包括由逗号分隔的参数:
    function Test(){
    	//函数体
    }
    //类中的constructor是构造方法
    class Test{
    	constructor(){
    		//方法体
    	}
    }
    
  2. 对象

    //使用花括号包裹,里面是键值对(key:value)的方式即为对象
    const person = {
      firstName: "Bill",
      lastName : "Gates",
      id: 678,
      fullName : function() {
        return this.firstName + " " + this.lastName;
      }
    };
    
  3. 实例对象

    //通过 new 关键字创建出来的即为实例对象
    function Test(name,age){
    	this.name = name
    	this.age = age
    }
    const test = new Test('zhangs', 42) 
    console.log(test) //Test {name: 'zhangs', age: 12}
    
    //通过类class定义的也可以创建对象(前提必须有 构造方法)
    class Test2{
    	constructor(){
    		//方法体
    	}
    }
    const test2 = new Test2()
    

进入正题

接下来是对JavaScript函数、对象中的prototype、__ proto __([[Prototype]])、constructor三者之间的关系进行详解
1

prototype

每当定义一个函数(函数也是对象)时候,函数中都会包含一些预定义的属性。其中每个函数都有一个prototype 属性,这个属性prototype就是原型对象。(多读几遍细品)

11
原型对象,顾名思义,它就是一个普通对象。从现在开始你要牢牢记住原型对象就是 函数中的prototype,比如上面代码定义的Person函数中的prototype。

__ proto __

在创建出来的实例对象(不论是普通对象还是函数对象)中,都有一个叫做__proto__([[Prototype]]) 的内置属性,用于指向创建它的构造函数的原型对象prototype

33
Person.prototype === person.__proto__

constructor

在默认情况下,所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Person)
44

上面那句话有点拗口,简单说下,其实原型对象还有一个默认的属性:constructor;这个属性是一个指针,指回 Person构造函数。
Person.prototype.constructor === Person
person.__proto__.constructor === Person

三者关系

111

原型链

每个对象都有个__proto__属性指向的也是原型对象 而原型对象也是个对象也有一个__proto__ 它指向的是继承上一级的原型对象 这样就形成了一个链式结构 叫做原型链
原型链
例如 上图所有对象都默认继承Object.prototype可以用对象上的属性和方法

原型及原型链图解

原型链2







到这里就结束了,后续还会更新 前端 系列相关,还请持续关注!
感谢阅读,若有错误可以在下方评论区留言哦!!!

111




推荐文章👇
原型和原型链
说说原型(prototype)、原型链和原型继承

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thetimezipsby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值