JavaScript学习(一)Prototype constructor 的个人理解

本文详细解析了JavaScript中构造函数、原型对象和实例对象之间的关系,包括Prototype原型对象的作用,constructor属性的指向,以及实例对象的proto属性。通过具体示例,阐述了如何通过构造函数创建实例,以及实例如何继承自原型对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript学习(一)Prototype constructor 的个人理解

Prototype原型对象

构造函数有一个prototype属性,指向实例对象的原型对象。通过同一个构造函数实例化的多个对象具有相同的原型对象。经常使用原型对象来实现继承

 class Star {
      constructor(uname, age) {
        this.uname = uname
        this.age = age
      }
      sing(sing) {
        console.log(sing);
      }
    }
    let ldh = new Star('刘德华', 20)
    let zxy = new Star('张学友', 18)
    console.log(ldh);
    console.log(zxy);
    ldh.sing("冰雨")
    zxy.sing("李香兰")

1

  1. 同一个类的所有实例都从同一个原型对象上继承属性

  2. 当且仅当两个对象继承自同一个原型对象时,他们才是属于同一个类的实例

特别说明:只有构造函数才有prototype属性,而构造函数的实例是没有该属性的,也就是说console.log(ldh.prototype)输出的是undefined。在javascript中,每个函数都自动有一个prototype属性,而不是每一个对象拥有prototype属性

原型属性与实例对象的创建与否没有关系,它在对象创建之前就已经存在

constructor属性

原型对象有一个constructor属性,指向该原型对象对应的构造函数


    class Star {
      constructor(uname, age) {
        this.uname = uname
        this.age = age
      }
      sing(sing) {
        console.log(sing);
      }
    }
    let ldh = new Star('刘德华', 20)
    console.log(ldh);
    console.log(ldh.constructor);
    

在这里插入图片描述

proto对象原型

实例对象有一个proto属性即对象原型,指向该实例对象对应的原型对象


    class Star {
      constructor(uname, age) {
        this.uname = uname
        this.age = age
      }
      sing(sing) {
        console.log(sing);
      }
    }
    let ldh = new Star('刘德华', 20)
    console.log(ldh.__proto__ === Star.prototype); //true
    

三者关系图

三者关系图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值