• prototype 原型对象


    在JavaScript中,原型对象是每个对象在创建时都会关联的一个内部对象。原型对象包含了可以被该对象直接访问的属性和方法。当我们试图访问一个对象的属性或方法时,JavaScript引擎会先查找该对象自身是否具有该属性或方法,如果没有,则会通过原型链去查找原型对象中是否有该属性或方法。原型链是一个对象到其原型对象,再到其原型对象的原型对象,依次往上查找的链条。

    以下是一个详细解析和代码示例:

    1. 原型对象的创建

    在JavaScript中,可以使用Object.create()方法创建一个新的对象,并将其原型对象设置为指定的对象。示例如下:

    1. const prototypeObj = { // 原型对象
    2. sayHello() {
    3. console.log("Hello!");
    4. },
    5. };
    6. const obj = Object.create(prototypeObj); // 创建一个新对象,并将原型对象设置为prototypeObj

    1. 原型对象的访问

    我们可以使用Object.getPrototypeOf()方法获取一个对象的原型对象,示例如下:

    1. const prototypeObj = { // 原型对象
    2. sayHello() {
    3. console.log("Hello!");
    4. },
    5. };
    6. const obj = Object.create(prototypeObj); // 创建一个新对象,并将原型对象设置为prototypeObj
    7. console.log(Object.getPrototypeOf(obj) === prototypeObj); // true

    1. 原型对象的属性和方法访问

    当我们试图访问一个对象的属性或方法时,JavaScript引擎会先查找该对象自身是否具有该属性或方法,如果没有,则会通过原型链去查找原型对象中是否有该属性或方法。示例如下:

    1. const prototypeObj = { // 原型对象
    2. sayHello() {
    3. console.log("Hello!");
    4. },
    5. };
    6. const obj = Object.create(prototypeObj); // 创建一个新对象,并将原型对象设置为prototypeObj
    7. obj.sayHello(); // Hello!

    1. 原型对象的属性和方法的修改和添加

    可以直接修改和添加原型对象中的属性和方法,示例如下:

    1. const prototypeObj = { // 原型对象
    2. sayHello() {
    3. console.log("Hello!");
    4. },
    5. };
    6. prototypeObj.sayHello = function () {
    7. console.log("Bonjour!");
    8. };
    9. prototypeObj.sayGoodbye = function () {
    10. console.log("Goodbye!");
    11. };
    12. const obj = Object.create(prototypeObj); // 创建一个新对象,并将原型对象设置为prototypeObj
    13. obj.sayHello(); // Bonjour!
    14. obj.sayGoodbye(); // Goodbye!

    注意:修改或添加原型对象的属性和方法会影响到所有使用该原型对象作为原型的对象。

    这就是原型对象的详细解析和代码示例。原型对象在JavaScript中是非常重要的概念,它使得对象可以共享属性和方法,并且通过原型链的方式实现了对象的继承。

  • 相关阅读:
    读书笔记:c++对话系列,Visitor模式
    [机缘参悟-60]:《兵者,诡道也》-2-孙子兵法解读
    接口测试面试秘籍,一套搞定接口测试
    亚马逊国际获得AMAZON商品详情 API 返回值说明
    浅析拉格朗日乘数法及其对偶问题
    线性代数知识点总结(下)
    LeetCode刷题---简单组(四)
    100种思维模型之错误记录思维模型-66
    docker概念、安装与卸载
    了解MES:提升制造业的效率与竞争力
  • 原文地址:https://blog.csdn.net/zxcv321zxcv/article/details/139739931