首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JavaScript反映所有对象引用中的属性更改。

JavaScript反映所有对象引用中的属性更改。
EN

Stack Overflow用户
提问于 2016-10-07 00:47:27
回答 1查看 113关注 0票数 0

我需要循环嵌套对象类并在对象中提取它们的属性。但是,从对象内部更改属性值并不会更改这些对象的根对象变量中的值。当我从对象内部检查时,将正确地应用新值。

但是,如果我添加新属性而不是对现有属性进行约束,则可以访问新属性。

js小提琴

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    var OO = function(o, parent){
        this.parent = parent || null;
        this.init(o);
        return this;
    };

    OO.prototype = {
        init: function(o){
            this.obj = typeof o === 'object' ? new OO(o.name, this) : o;
            this.type = typeof o === 'object' ? 'object' : 'string';

            if( typeof o === 'string' ){
                this.change();
                console.log(this.parent); // Here top-level oo object holds values called in change() function. I want the variable ( oo_var ) holding this top-level oo to have same property values too.
                this.add();
            }               
        },

        change: function(){
            this.parent.obj = 'Orange'; // Holds {} before changing
            this.parent.type = 'string'; // 'object' before changing
        },

        add: function(){
            this.parent.another_obj = 'Another';
            this.parent.another_type = 'another string';
        }
    };

    var oo_var = new OO({name: 'Apple'}); // This var doesn't refresh the obj & type property values applied in change() function. But has properties added in add() function.

我有许多级别嵌套的对象,每个级别上都有兄弟姐妹。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-07 01:18:18

构造函数只应执行创建,而不应更改任何内容的状态。它不需要调用init方法,也不应该调用(甚至间接) change方法。

搞定

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function OO(o, parent) {
    this.parent = parent || null;
    this.type = typeof o;
    this.obj = this.type === 'object' ? new OO(o.name, this) : o;
}
OO.prototype.change = function() {
    this.parent.obj = 'Orange'; // Holds {} before changing
    this.parent.type = 'string'; // 'object' before changing
};
OO.prototype.add = function(){
    this.parent.another_obj = 'Another';
    this.parent.another_type = 'another string';
};

var oo_var = new OO({name: 'Apple'});
console.dir(oo_var);
oo_var.obj.change();
oo_var.obj.add();
console.dir(oo_var);

让子代改变父级而不是父级更改本身也有点奇怪(如果不是错的话)。

如果您不想自己调用这些方法,可以使用一种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
OO.prototype.init = function() {
    if (this.type === 'object' ) {
        this.obj.init();
    } else if (this.type === 'string') {
        this.change();
        this.add();
    }
};

var oo_var = new OO({name: 'Apple'});
console.dir(oo_var);
oo_var.init();
console.dir(oo_var);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39913155

复制
相关文章
Spring启用缓存
Spring对缓存的支持类似于对事务的支持,Spring缓存的思想是在调用方法时,会把该方法的参数和返回结果作为一个键值对存放于缓存中,下次在调用该方法时直接从缓存返回结果。
Tim在路上
2020/08/04
6790
Java内存缓存-通过Google Guava创建缓存
Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。
小码农薛尧
2019/08/27
2.8K0
Java内存缓存-通过Google Guava创建缓存
Java内存缓存-通过Map定制简单缓存
在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索或计算的数据。
小码农薛尧
2019/08/27
3.6K1
Java内存缓存-通过Map定制简单缓存
java的IO技术中什么是I什么是O?
马克-to-win:很多老司机还搞不清什么是I什么是O。很简单,我有个土办法。以内存为单位,数据进内存叫In,出内存叫Out。读文件,是数据从硬盘进到内存,所以用in类型流来处理。
马克java社区
2021/05/06
1.5K0
java的IO技术中什么是I什么是O?
golang fmt(格式换 I O接口)
fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。
copy_left
2019/08/21
9840
最短路怎么可能尽可能地长呢?
https://www.acwing.com/activity/content/59/
Piper蛋窝
2021/08/20
4220
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
设计如下: 在接口层传入缓存key的前缀,通过匹配的方式将能匹配到该前缀的所有key均删除。
小小工匠
2021/08/17
3510
Caffeine缓存 最快缓存 内存缓存
Caffeine是在Guava Cache的基础上做一层封装,性能有明显提高,二者同属于内存级本地缓存。使用Caffeine后无需使用Guava Cache,从并发的角度来讲,Caffeine明显优于Guava,原因是使用了Java 8最新的StampedLock锁技术。
赛先生和泰先生
2022/01/21
3K0
Caffeine缓存 最快缓存 内存缓存
Java-Java I/O流解读之基于字节的I / O和字节流
编写简单的 I / O操作很简单,仅仅涉及到很少的类和方法。 但是编写高效,便携式I / O非常困难,特别是如果我们必须处理不同的字符集。 这就解释了为什么有这么多的I / O包(在JDK 1.7中有9个)!
小小工匠
2021/08/17
1.1K0
Java-Java I/O流解读之基于字符的I / O和字符流
Java内部将字符(字符类型)存储在16位UCS-2字符集中。 但外部数据源/接收器可以将字符存储在其他字符集(例如US-ASCII,ISO-8859-x,UTF-8,UTF-16等等)中,固定长度为8位或16位, 位或以1到4字节的可变长度。 [读取“字符集和编码方案”]。
小小工匠
2021/08/17
1.8K0
Access、SQLite、HSQLDB、Sybase、MySQL、DB4O
一、Access     数据类型有些另类,而且密码太容易被攻破,性能不高,只能用在Windows程序上。     一般说来,单个表不超过10万少条记录为好,整个数据库不超过100M为好。ACCESS对数据库容量限制为2G,但超过100M后性能便 会有很大折扣。 二、HSQLDB     支持csv,配置分发容易,大数据量情况下性能不佳,这和sql执行效率无关,性能瓶颈在硬盘文件上,毕竟由于hsqldb没有在数 据文件存储上花时间,只是挂个csv。只能用于Java程序中。 三、firebird
用户1258909
2018/07/03
1.6K0
I-o-C 一篇概览
IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同。
WindWant
2023/05/09
1.1K0
I-o-C 一篇概览
在Google I / O 2018上观看Flutter
距离Google I / O 2018仅仅一周之遥,Flutter将在活动中展示风格,包括会话,代码,办公时间,交互式沙箱空间等等。
flyou
2019/08/06
1.8K0
在Google I / O 2018上观看Flutter
Android高效内存2:让图片占用尽可能少的内存
Android高效内存:让图片占用尽可能少的内存 一、让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336    小图:220 * 168 资源目录:xhdpi 小图的高宽都是
用户1155943
2018/01/04
1.7K0
Android高效内存2:让图片占用尽可能少的内存
启用 MySQL 和 MariaDB 查询缓存
很多新手都在使用 Memcached 或者 Redis 扩展来加速服务器数据库的运行性能,其实这些扩展对于小博客的服务器来说有时候是个负担和安全隐患的,具体可以参考【理智冷静的使用 Memcached 或者 Redis】一文,那么不使用优化扩展我们如何来提升 MySQL 或 MariaDB 数据库的运行性能呢?
明月登楼的博客
2019/05/15
2.7K0
JAVA线程-CPU缓存和内存屏障(四)
1.修改态(Modified),此cache行已被修改过(脏行),内容已不同于主存,为此cache专有。 2.专有态(Exclusive),此cache行内容同于主存,但不出现于其他cache中。 3.共享态(Shared),此cache行内容同于主存,但也出现于其他cache中。 4.无效态(Invalid),此cache行内容无效,需要从主内存重新加载。
IT架构圈
2020/03/28
1.8K0
实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存
Redis性能十分优越,可以支持每秒十几万次的读/写操作,其性能远超数据库,并且支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,它还能支持一定的事务能力,这在高并发访问的场景下保证数据安全和一致性特别有用。
小小工匠
2021/08/17
4480
[BlogCore操作文档4] MemoryCache:内存缓存
采用最新的前后端完全分离技术【 ASP.NET Core Api 6.0 + Vue 2.x 】,并结合 IdentityServer4 ,可快速解决多客户端和多资源服务的统一认证与鉴权的问题,以及整合较为完善的数据权限控制。
老张的哲学
2023/08/23
2970
[BlogCore操作文档4] MemoryCache:内存缓存
go 内存缓存
很多时候我们为了缩短单次请求的时间,就需要去分析请求在哪一步耗时比较大,一般越靠近应用层优化效果越大,后端程序就是请求到达路由解析到返回结果这一步骤了。
花落花相惜
2021/11/25
8700
磁盘:最容易被忽略的性能洼地
在没有SSD硬盘之前,大家都会觉得我们的HDD硬盘很好用,什么5400转、7200转,广告都是棒棒的。直到有一天,SSD出现了,发现启动Windows的时候,居然可以秒开,这才幡然醒悟。因此,对于外行来说,磁盘I/O性能总是最容易被忽略的,精力会更集中在CPU上。但是对于内行人来说,大家都懂得,性能无非是CPU密集型和I/O密集型。磁盘I/O就是其中之一。那么到了移动时代,我们的存储芯片性能究竟怎样呢?在讨论这个问题之前,我们来看一个测试数据。
博文视点Broadview
2020/06/11
1.2K0
磁盘:最容易被忽略的性能洼地

相似问题

用内存映射I/O管理缓存

13

I/O内存映射

11

CPU缓存是否在I/O期间刷新到内存?

25

内存映射I/O如何区分内存和I/O传输?

11

快速SQLite I/O错误

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文