首页 > 其他分享 >js实例对象读写原型对象成员

js实例对象读写原型对象成员

时间:2024-06-18 09:30:48浏览次数:18  
标签:name person 对象 读写 js Person 实例 age

在 JavaScript 中,实例对象可以读写原型对象的成员。原型对象是一个对象,用于存储共享的属性和方法,它是通过构造函数创建的实例对象的共享属性和方法的来源。

你可以通过以下几种方式来读写原型对象的成员:

  1. 通过实例对象的__proto__属性来读取原型对象的成员。__proto__属性指向实例对象的原型对象。

    function Person(name) {
      this.name = name;
    }
    Person.prototype.age = 20;
    
    var person = new Person("John");
    console.log(person.__proto__.age); // 输出 20
    

  2. 通过 Object.getPrototypeOf() 方法来获取实例对象的原型对象,并读取原型对象的成员。

    function Person(name) {
      this.name = name;
    }
    Person.prototype.age = 20;
    
    var person = new Person("John");
    var proto = Object.getPrototypeOf(person);
    console.log(proto.age); // 输出 20
    

  3. 直接通过实例对象来访问原型对象的成员。实例对象会首先在自身的属性中查找,如果找不到,就会继续在原型对象中查找。

    function Person(name) {
      this.name = name;
    }
    Person.prototype.age = 20;
    
    var person = new Person("John");
    console.log(person.age); // 输出 20
    

对于写入原型对象的成员,如果实例对象中已经存在同名的属性,则会覆盖原型对象中的成员。如果实例对象中不存在同名的属性,则会在实例对象中创建一个新的属性。

function Person(name) {
  this.name = name;
}

Person.prototype.age = 20;

var person = new Person("John");
console.log(person.age); // 输出 20

person.age = 25;
console.log(person.age); // 输出 25

console.log(Person.prototype.age); // 输出 20

上述代码中,当我们将person.age赋值为25时,实际上是在实例对象中创建了一个名为age的新属性,覆盖了原型对象中的age属性。此时,person.agePerson.prototype.age是不同的值。

总结:

  • 实例对象可以通过 __proto__ 属性、Object.getPrototypeOf() 方法和直接访问属性的方式读取原型对象的成员。
  • 如果实例对象中已经存在同名的属性,写入操作会覆盖原型对象中的成员,如果不存在同名的属性,写入操作会创建一个新的属性。

标签:name,person,对象,读写,js,Person,实例,age
From: https://blog.csdn.net/zxcv321zxcv/article/details/139761160

相关文章

  • JSON响应中提取特定的信息——6.14山大软院项目实训2
    在收到的JSON响应中提取特定的信息(如response字段中的文本)并进行输出,需要进行JSON解析。在Unity中,可以使用JsonUtility进行简单的解析,但由于JsonUtility对嵌套对象的支持有限,通常推荐使用第三方库如Newtonsoft.Json来处理复杂的JSON结构。首先,确保Unity项目中已经包含了Newton......
  • 由心知天气服务器响应的实时天气数据并进行JSON解析
    由心知天气服务器响应的实时天气数据并进行JSON解析#include<netinet/in.h>#include<arpa/inet.h>#include<stdio.h>#include<errno.h>#include<sys/socket.h>#include<netinet/in.h>#include<netinet/ip.h>#include<arpa/inet.h>......
  • 第一百一十节 Java面向对象设计 - Java泛型类
    Java面向对象设计-Java泛型类使用泛型,我们可以在不知道代码操作对象的类型的情况下编写代码。它允许我们创建泛型类,构造函数和方法。泛型类是使用形式类型参数定义的。形式类型参数是一个逗号分隔的变量名列表,位于类声明中类名后面的尖括号<>中。语法下面的代码声明一......
  • Java面向对象:初识继承
    继承:一个类(子类或派生类)继承另一个类(父类或基类)的特性(属性和方法)。1、继承1.1、不使用继承例子:classDog{Stringname;intage;publicDog(Stringname,intage){this.name=name;this.age=age;}publicvoideat(){......
  • 面向对象程序设计1.2 类之间的组合关系
    一、复习一下在1.1里我们定义了类Date,忘记的小伙伴可以看看下面的代码classDate{private:intyear;intmonth;intday;//数据成员,默认为私有public:Date():year(2000),month(1),day(1){}//不带参数的构造函数Date(intyear,intmonth,in......
  • JS 控制并行度
    consturls=["url1","url2",...,"url100"];constmaxConcurrentNum=10;//最大并发数//数组分块,chunk表示每批次数量,返回数组二维数组functionchunk(arr,chunk){letresult=[];for(leti=0,len=arr.length;i<len;i+=chunk......
  • (11.3)iic串口读写EEPROM实验:程序设计
    一、实验任务二、架构框图其中:i2c驱动模块: bit_ctrl:0代表发送8位字节地址;1代表发送16位字节地址(本实验采用)i2c_addr[15:0]:16位字节地址,当bit_ctrl为0时只有低8位是有效的i2c_data_w[7:0]:向EEPROM写入的8位数据i2c_exec:拉高代表当前进行......
  • 基于html,css,js,jQuery,ajax实时天气的网页
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><linkrel="stylesheet"hr......
  • NIO操作文件读写
    第一章第一节,Buffuer案例一 从buffur读出数据,创建了一个 FileInputStream 对象,并通过调用 getChannel() 方法获取了与之关联的 FileChannel。然后,我们创建了一个 ByteBuffer,并使用 channel.read(buffer) 方法从文件中读取数据到缓冲区。最后,我们通过循环将缓冲区中......
  • 前端JS必用工具【js-tool-big-box】学习,打开全屏和关闭全屏
    这一小节,我们说一下js-tool-big-box工具库中,打开全屏和关闭全屏的方法学习。我们知道,浏览器想打开全屏,按一下F11键就可以了,但一来这个功能不一定所有使用的用户都知道,二来在一些例如大屏的需求场景下,还是很被需要的。很多用户一旦投屏展示后,他那个大屏幕就在那里给用户展......