【Javascript】通过实例对象修改原型对象属性的值
结论:
当原型对象的属性值为基本数据类型时,无法通过实例对象直接修改原型对象的属性值。当原型对象的属性值为引用数据类型时,可以直接通过实例对象修改原型对象的属性值。
基本类型的数据值有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】通过实例对象修改原型对象属性的值相关推荐
- JavaScript 进阶 35 -- 构造函数、原型对象、实例之间的关系详解
说到继承 ,先要弄明白 :构造函数.原型对象.实例之间的关系. 先来了解几个简单的概念: 构造函数:通过 关键字 new 来调用的 函数,var p = new Person():Person就称为构 ...
- JavaScript高级 |彻底搞懂原型对象
本文已收录于专栏 ⭐️ <JavaScript>⭐️ 学习指南: 对象的原型 函数的原型 new操作符 将方法放原型里 constructor 总结梳理 原型对象 内存表现 完结散花 参考 ...
- JavaScript——面向对象之继承(原型对象)与多态(重载、重写)
继承与多态 引入问题 一.继承 1. 步骤 (1) 找到所有子对象共同的父对象 (2) 将所有子对象公共的方法定义添加到共同的父对象中 (3) 所有子对象因继承关系而直接使用父对象中公共的方法 2. ...
- Javascript深入理解构造函数和原型对象
1.在典型的oop的语言中,如java,都存在类的概念,类就是对象的模板,对象就是类的实例.但在js中不存在类的概念,js不是基于类,而是通过构造函数(constructor)和原型链(propoty ...
- 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系
体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...
- 面向对象2(构造函数、实例对象、原型对象——关系理解)
参考解释: 对象原型 构造函数与实例对象 构造函数与实例对象 关系: 实例对象是通过构造函数来创建的,创建的过程叫实例化. 示例代码: //1.自定义构造函数 function Person(name ...
- ES6-改变对象的原型对象
ES6-改变对象的原型对象 let person = {getGreeting () {return 'Hello';}};let dog = {getGreeting () {return 'woo ...
- maven 依赖公司另一项目中的对象,对象里的部分属性set值报错not found
背景 项目A依赖项目B(B是公司自己开发的另一个项目),在install 时,报错.根据错误日志发现:项目A有一个依赖项目B的对象,属性在set值时一直报错,not found,其他属性都可以set. ...
- 【Lombok】@With | 通过重新构造对象修改不可变属性
文章目录 一.简介 二.示例比较 1. Lombok 写法 2. Java 标准写法 三.支持的配置项 四.附属说明 参考文献 一.简介 @Wither是在lombok v0.11.4中作为实验性功能 ...
最新文章
- Redis命令——发布订阅
- HDU 3613 Best Reward 正反两次扩展KMP
- Scala 类和对象详解
- 牛客网Wannafly模拟赛
- FusionChart完全入门手册 -2
- diff git 指定时间,git diff日期?
- 遇到 ORACLE 错误 1658
- 使用postman调试web API
- 关于员工技术及培训所想
- E - Elevator
- 【软件】WPS VBA 7.0.1590(百度云免费下载链接)
- c语言程序求对称矩阵,C语言经典算法上三角下三角对称矩阵
- iOS 10版本适配
- SP2-0734: unknown command beginning lsnrctl st... - rest of line ignored.
- Nacos 1.0.1 发布,社区一起定义的 Nacos
- 解决 unity 按住鼠标右键 WS不能前进后退(我被自己蠢哭了)
- iOS 盒子布局之 YogaKit
- BDD - SpecFlow Web UI 测试实践
- 2023新华为OD机试题 - 最短木板长度(JavaScript) | 刷完来对接OD招聘渠道
- SSM 学习管理系统
热门文章
- Android之APP保活
- AI美少女小冰单飞,自由成长成现实?
- ns-3 third.cc
- 自媒体们的新战场:搜狐新闻客户端
- Win10连接蓝牙音响断开后要重新配对
- BUAA北航2021期末数据结构B题
- java 匹配日期格式_Java未知日期格式匹配格式化
- 本人亲测精选推荐最新10个优秀源码下载网站超值收藏
- Java项目运行,解决“java.sgl.SQLSyntaxErrorEx: Unknown column ‘user0_.qrcode‘ in ‘field list!” 问题
- (20)Java基础 --面向对象(1)