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

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
    

三者关系图

三者关系图

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读