结论:

当原型对象的属性值为基本数据类型时,无法通过实例对象直接修改原型对象的属性值。当原型对象的属性值为引用数据类型时,可以直接通过实例对象修改原型对象的属性值。

  • 基本类型的数据值有7种:字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol、BigInt
    Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

  • 引用类型的数据值往大的说就1种,即Object类型。往细的说有:Object类型、Array类型、Date类型、Regexp类型、Function类型等。

function A() {}
A.prototype.n = 0;
A.prototype.arr=[1,2,3,4]
A.prototype.add = function () {this.n += 1;  //this指向实例对象,由于实例对象中没有n,所以会创建n// this.__proto__.n=20console.log("this",this);  //指向实例对象console.log("this.n",this.n);   //指向实例对象中的nconsole.log("this.prototype.n",this.__proto__.n);  //指向实例对象的原型对象中的nreturn this.n   //返回实例对象中的n
}a = new A();
b = new A();
a.add(); // a.__proto__ = {n:0,add:f()}
a.arr.push(5)
b.add()// b=A{n:1},b.__proto__ = {n:0,add:f()}
console.log(a); //a=A{n:1}
console.log(b); //a=A{n:1}
console.log(a.__proto__); //{n: 0, arr: Array(5), add: ƒ, constructor: ƒ}
console.log(b.__proto__); //{n: 0, arr: Array(5), add: ƒ, constructor: ƒ}
console.log(a.n);  //1
console.log(b.n);  //1
console.log(a.__proto__.n);  //0
console.log(b.__proto__.n);  //0
console.log(a.arr);  //[1, 2, 3, 4, 5]
console.log(b.arr);  //[1, 2, 3, 4, 5]
console.log(a.__proto__.arr);  //[1, 2, 3, 4, 5]
console.log(b.__proto__.arr);  //[1, 2, 3, 4, 5]
console.log(a.__proto__.arr==a.arr)  //true
console.log(a.__proto__.arr==b.__proto__.arr)  //true

【Javascript】通过实例对象修改原型对象属性的值相关推荐

  1. JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解

    说到继承 ,先要弄明白 :构造函数.原型对象.实例之间的关系. 先来了解几个简单的概念: 构造函数:通过 关键字 new 来调用的 函数,var p = new Person():Person就称为构 ...

  2. JavaScript高级 |彻底搞懂原型对象

    本文已收录于专栏 ⭐️ <JavaScript>⭐️ 学习指南: 对象的原型 函数的原型 new操作符 将方法放原型里 constructor 总结梳理 原型对象 内存表现 完结散花 参考 ...

  3. JavaScript——面向对象之继承(原型对象)与多态(重载、重写)

    继承与多态 引入问题 一.继承 1. 步骤 (1) 找到所有子对象共同的父对象 (2) 将所有子对象公共的方法定义添加到共同的父对象中 (3) 所有子对象因继承关系而直接使用父对象中公共的方法 2. ...

  4. Javascript深入理解构造函数和原型对象

    1.在典型的oop的语言中,如java,都存在类的概念,类就是对象的模板,对象就是类的实例.但在js中不存在类的概念,js不是基于类,而是通过构造函数(constructor)和原型链(propoty ...

  5. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系

    体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  6. 面向对象2(构造函数、实例对象、原型对象——关系理解)

    参考解释: 对象原型 构造函数与实例对象 构造函数与实例对象 关系: 实例对象是通过构造函数来创建的,创建的过程叫实例化. 示例代码: //1.自定义构造函数 function Person(name ...

  7. ES6-改变对象的原型对象

    ES6-改变对象的原型对象 let person = {getGreeting () {return 'Hello';}};let dog = {getGreeting () {return 'woo ...

  8. maven 依赖公司另一项目中的对象,对象里的部分属性set值报错not found

    背景 项目A依赖项目B(B是公司自己开发的另一个项目),在install 时,报错.根据错误日志发现:项目A有一个依赖项目B的对象,属性在set值时一直报错,not found,其他属性都可以set. ...

  9. 【Lombok】@With | 通过重新构造对象修改不可变属性

    文章目录 一.简介 二.示例比较 1. Lombok 写法 2. Java 标准写法 三.支持的配置项 四.附属说明 参考文献 一.简介 @Wither是在lombok v0.11.4中作为实验性功能 ...

最新文章

  1. Redis命令——发布订阅
  2. HDU 3613 Best Reward 正反两次扩展KMP
  3. Scala 类和对象详解
  4. 牛客网Wannafly模拟赛
  5. FusionChart完全入门手册 -2
  6. diff git 指定时间,git diff日期?
  7. 遇到 ORACLE 错误 1658
  8. 使用postman调试web API
  9. 关于员工技术及培训所想
  10. E - Elevator
  11. 【软件】WPS VBA 7.0.1590(百度云免费下载链接)
  12. c语言程序求对称矩阵,C语言经典算法上三角下三角对称矩阵
  13. iOS 10版本适配
  14. SP2-0734: unknown command beginning lsnrctl st... - rest of line ignored.
  15. Nacos 1.0.1 发布,社区一起定义的 Nacos
  16. 解决 unity 按住鼠标右键 WS不能前进后退(我被自己蠢哭了)
  17. iOS 盒子布局之 YogaKit
  18. BDD - SpecFlow Web UI 测试实践
  19. 2023新华为OD机试题 - 最短木板长度(JavaScript) | 刷完来对接OD招聘渠道
  20. SSM 学习管理系统

热门文章

  1. Android之APP保活
  2. AI美少女小冰单飞,自由成长成现实?
  3. ns-3 third.cc
  4. 自媒体们的新战场:搜狐新闻客户端
  5. Win10连接蓝牙音响断开后要重新配对
  6. BUAA北航2021期末数据结构B题
  7. java 匹配日期格式_Java未知日期格式匹配格式化
  8. 本人亲测精选推荐最新10个优秀源码下载网站超值收藏
  9. Java项目运行,解决“java.sgl.SQLSyntaxErrorEx: Unknown column ‘user0_.qrcode‘ in ‘field list!” 问题
  10. (20)Java基础 --面向对象(1)