美文网首页
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方法供两个对象使用;
在程序运行过程中,每多创建一个方法,都要消耗一定的内存;而原型对象中的方法,可以帮我们节省这些因频繁创建方法而消耗的内存;

相关文章

  • JS重要概念之原型与原型链

    #Prototype原型对象 原型对象Function.prototype,具备以下特点:原型对象prototyp...

  • 原型与原型链

    原型(prototype) 在JavaScript中,原型(prototype)也是一个对象,通过原型可以实现对象...

  • 原型与原型链

    原型(prototype) 在JavaScript中,原型(prototype)也是一个对象,通过原型可以实现对象...

  • 原型链

    原型链函数的原型对象prototype函数都有prototype属性指向函数的原型对象【只有函数根除外】原型对象的...

  • JavaScript---原型

    学习目标 使用 prototype 原型对象解决构造函数的问题 理解什么是原型(原型对象) 构造函数、protot...

  • 原型链

    prototype:构造函数有一个prototype属性,指向实例对象的原型对象。constructor:原型对象...

  • JavaScript - 原型对象

    原型对象 构造函数的 prototype 对象称为原型对象。 Student.prototype 是构造函数 St...

  • 一篇就够-理解原型和原型链

    prototype和proto prototype是原型对象,proto是原型 prototype 每个函数都有一...

  • Prototype(原型对象)学习

    一、Prototype(原型对象) js中的每一个对象,都有一个原型对象;Data对象有一个原型对象Data.pr...

  • Javascript中的prototype proto和cons

    主要结论: 只有函数对象有prototype原型属性,而且函数对象的原型(prototype)指向该函数对象的实例...

网友评论

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

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