美文网首页
Prototype(原型对象)学习

Prototype(原型对象)学习

作者: fanren | 来源:发表于2022-10-18 16:14 被阅读0次

    一、Prototype(原型对象)

    js中的每一个对象,都有一个原型对象;
    Data对象有一个原型对象Data.prototype;
    Array对象有一个原型对象Array.prototype;
    同理,我们自定义的一个类的对象,也有它对应的原型对象

    // 定义一个Person类
    const Person = function (name, age) {
        this.name = name;
        this.age = age;
        this.getAge = function (){
            return this.age;
        }
    }
    // 原型
    Person.prototype = {
        getUserName: function() {
            return this.name;
        }
    }
    // 创建一个实例对象
    let person1 = new Person('zhangsan', 16)
    console.log(person1);
    
    结果

    根据上述的结果,我们可以看出,对象person1里有一个属性[[Prototype]],该属性是一个Object(对象),它有一个方法getUserName是我们在Person.prototype中定义的方法;
    而该[[Prototype]]属性,就是对象person1的原型对象;

    二、原型对象的作用

    对象可以调用它原型对象的一切属性和方法;

    let person1 = new Person('zhangsan', 16)
    console.log(person1.getUserName());
    
    结果

    三、原型对象的优势

    给一个类定义属性和方法,可以直接在类中定义,也可以在原型中进行定义;
    那原型又有什么优势呢?先看以下的例子

    let person1 = new Person('zhangsan', 16)
    let person2 = new Person('lisi', 17);
    
    console.log('getAge',person1.getAge == person2.getAge);
    console.log('getUserName', person1.getUserName == person2.getUserName);
    
    结果

    两个不同的对象,getAge是类中定义的方法,而getUserName是原型中定义的方法;
    创建了两个对象的过程,给每个对象都创建了getAge方法,却只创建了一个getUserName方法供两个对象使用;
    在程序运行过程中,每多创建一个方法,都要消耗一定的内存;而原型对象中的方法,可以帮我们节省这些因频繁创建方法而消耗的内存;

    相关文章

      网友评论

          本文标题:Prototype(原型对象)学习

          本文链接:https://www.haomeiwen.com/subject/hliezrtx.html