【JavaScript学习笔记12】JS构造函数补充-Constructor 返回对象的”祖宗“和 Prototype属性动态添加对象属性

引言

在使用构造函数创建对象的时候使用的方法是:var test = new Object();实质上是在其“祖宗”上创建一个对象,因此作为一个"祖宗"对象都拥有的属性是:constructor,prototype属性

Constructor属性

属性定义:返回对创建此对象的函数的引用
使用方法:当我们在开发的过程中遇到一个对象,并不清楚其实那个函数创建的时候,可以调用constructor属性知道其构造方法。

    var obj = new Object();
    console.log(obj.constructor);

Prototype属性

属性定义:使开发者有能力向对象添加属性和方法
使用方法:在开发的过程中,可以通过此属性,在创建对象的构造函数中添加新属性。

当我们开发中需要往对象中添加新的属性和方法,如果不能在构造函数中添加,那么新创建的对象一样不具备新加入的属性以及方法:
在这里插入图片描述
因此要引入Prototype:

    var obj = new Object();
    //使用prototype添加新方法
    Object.prototype.test=function () {
        console.log("测试");
    }
    obj.test();
    //创建第二个新的对象
    obj2 =new Object();
    obj2.test();

在这里插入图片描述

Prototype理解

Prototype的实质可以理解:比如:在原有的Object构造函数中的属性有name,age,sex。然后通过Prototype添加属性,相当于创建了一个属性的共享库,将需要添加的属性或者方法写到共享库中以供使用:
在这里插入图片描述
因此常用的方式:

 //1、构造函数
    function Student(option) {
        //属性
        // this.name = option.name;
        // this.age  = option.age ;
        // this.sex  = option.sex ;
        this._init(option);
    }
    //prototype添加新属性和方法
    Student.prototype ={
        _init:function(option){
            //区别于系统的init函数,将构造函数的初始化属性加入此处
            this.name = option.name;
            this.age  = option.age ;
            this.sex  = option.sex ;

            //新加入的属性
            this.grade =option.grade;
            this.num   =option.num;
        },

        run:function (something) {
            console.log(this.name+"在跑");
        },

        test:function (something) {
            console.log(this.name+"在测试");
        },

    };
    var str1 = new Student({name :"Ray",age :18,sex:"男",grade:66,num:13});
    str1.run();
    str1.test();
    console.log(str1);

在这里插入图片描述

发布了91 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/RayCongLiang/article/details/104260364
今日推荐