构造函数、原型对象、实例对象关系

  • 每个构造函数都有一个默认的属性, 叫做prototype, 这个属性指向一个对象(原型对象)
  • 每个原型对象都有一个默认的属性, 叫做constructor, 这个属性指向原型对象对应的构造函数
  • 每个对象都有一个默认的属性, 叫做_proto_(双杠), 这个属性指向创建它的构造函数的原型对象
    上代码
    // 定义一个构造函数
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    // 给构造函数的原型对象添加属性和方法
    Person.prototype.say = function () {
        console.log(this.name, this.age);
    };
    Person.prototype.type = "Human";
    
    // 通过构造函数创建对象
    var obj1 = new Person("luodou", 13);

    console.log(obj1);  //Person

    console.log(Person.prototype);  //Object
    console.log(obj1.__proto__);    //Object
    console.log(obj1.__proto__ === Person.prototype); // true
    console.log(obj1.__proto__.constructor);    //ƒ Person(name, age) {this.name = name;this.age = age;}
    console.log(Person.prototype.constructor);  //ƒ Person(name, age) {this.name = name;this.age = age;}
    console.log(obj1.__proto__.constructor === Person.prototype.constructor);  //true

关系图

原型链

上图


看图,不解释

  • 注意Person的原型对象实质上是Object的一个实例,任何自定义的对象,在原型链上都可以找到Object
    待续......
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,172评论 0 6
  • 普通创建对象和字面量创建对象不足之处:虽然 Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有...
    believedream阅读 2,464评论 2 18
  • 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。ECMAScr...
    DHFE阅读 1,021评论 0 4
  • 轰隆隆的飞机安全降落在这座美丽,炎热的沿海城市,紫仙一走出机场大厅就被这迎面扑来的潮热海风包裹着,觉得热的...
    蝴蝶飞飞28阅读 316评论 0 0
  • 群英会 草长莺飞四月天 商会精英下厨忙 美女洗切好帮手 帅哥主厨口味香
    武传华阅读 105评论 0 0