Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >重写对象的长度属性

重写对象的长度属性
EN

Stack Overflow用户
提问于 2012-07-10 23:40:08
回答 4查看 1K关注 0票数 0

我发现自己处于一个有趣的境地。我正在使用对象字面量来表示现实世界中的产品。现在,为了便于运输,每个产品都有一个与之关联的长度。它看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var product = {
  name: 'MacBook Pro 15 Inch',
  description: 'The new macbook pros....',
  length: 15
  height: 15
  Weight: 4
}

这个这个运行得很好。但是对于长度未知的产品,它们的默认长度为-1。

同样,在您尝试执行此操作之前,此方法运行良好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log('Product has the following properties');
_.each(product, function(val, key) {
    console.log(key + ":" + val);
});

对于长度为-1的产品,不会打印任何密钥。为什么?因为内部下划线使用长度属性,所以Javascript中的每个对象都必须遍历传入对象的所有属性。因为我们覆盖了这个值,所以它现在是-1,并且因为我们从i = 0开始循环,所以这个循环将永远不会被执行。

现在问题来了,如何防止length属性被覆盖?防止这种情况发生的最佳实践也将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-10 23:49:32

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    var product = {
        name: "MacBook Pro 15 Inch",
        description: 'The new macbook pros....',
        length: 15,
        height: 15,
        weight: 4
    };
    console.log('Product has the following properties');
    _.each(_.keys(product), function(key){
        console.log(key + ":" + product[key]);
    });
票数 1
EN

Stack Overflow用户

发布于 2012-07-10 23:45:15

这可能是由于_each函数中的一些魔法,因为我怀疑它同时接受Objects和Arrays。

简单的实现(避免了一些常见的陷阱):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function each(obj, map_func) {
    var key;
    for (key in obj) {
        if (Object.prototype.hasOwnerProperty.call(obj, key)) {
            map_func(key, obj[key]);
        }
    }
}

_each中的魔力可能是由于JavaScript中一个讨厌的“习惯”,即拥有“看起来”像数组但实际上不是数组的东西,比如神奇的变量arguments,我认为options也在选择DOM元素中。

票数 1
EN

Stack Overflow用户

发布于 2012-07-10 23:47:30

我想不出任何可以超越它的东西。我认为使用长度属性是一种通过jQuery将其标记为可迭代的鸭子类型。

但是..。您可以不使用jQuery each方法,而以手动方式完成它。

通过简单地使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (key in product) { 


}

你得到了你的基本循环。现在,如果您可能会覆盖对象的原型,则还应该检查product.hashOwnProperty( key ),以确保在产品实例中定义了您正在迭代的当前key。

现在,如果您还需要一个新的闭包作用域,这也非常简单。下面是每个函数的替代方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myEach = function(subject, callback) {

  for (key in subject) {

     if (subject.hasOwnProperty(key)) {
        callback(subject[key], key);
     }
  }

}

注:未测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11423556

复制
相关文章
Linux 内存使用率
PS:什么是SReclaimable?在linux内核中会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry。那么这些对象如果每次构建的时候就向内存要一个页,而其实际大小可能只有几个字节,这样就非常浪费,为了解决这个问题就引入了一种新的机制来处理在同一页框中如何分配小存储器区,这个机制可以减少申请和释放内存带来的消耗,这些小存储器区的内存称为Slab。meminfo文件中标识了Slab的大小,而SReclaimable是指可收回Slab的大小。
踏歌行
2020/10/15
3.8K0
在 Linux 下如何检查内存使用率
在排查系统问题,或者应用变慢,或者不明原因问题时,第一件事就是要检查系统的内存使用率。
雪梦科技
2020/07/22
9.7K0
在 Linux 下如何检查内存使用率
如何"快准狠"找到内存相关的问题
为了迅速定位内存问题,通常会先运行几个覆盖面比较大的性能工具,比如 free、top、vmstat、pidstat 等。
HaydenGuo
2019/12/13
7070
如何"快准狠"找到内存相关的问题
linux 监控 内存使用率
/proc/meminfo   used=total-(buffers+cached+free)
葫芦
2019/04/17
3.1K0
[422]linux查看CPU和内存使用率
%us: 表示用户空间程序的cpu使用效率 %sy:表示系统空间程序的cpu使用效率 %ni: 表示用户空间通过nice调度过的程序的cpu使用效率 %id: 空闲cpu %wa:cpu运行时等待io的时间 %hi: cpu运行过程中硬中断的数量 %si: cpu处理软中断的数量 %st: 被虚拟机偷走的cpu
周小董
2022/04/13
9.1K0
[422]linux查看CPU和内存使用率
Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD
WGCLOUD是一款优秀的开源运维监控平台,安装部署方便,轻量实用,分布式,自动化,高性能,对主流平台兼容性好
那年十八
2022/09/17
10.2K0
Linux监测进程cpu使用率、内存使用率的工具 - WGCLOUD
linux系统怎么看内存使用率_cpu使用率0
和top一样,可以看到所有cpu的使用情况。如果需要查看某颗cpu的使用可以用-P参数。例如指定显示0号cpu 的使用情况。
全栈程序员站长
2022/10/03
21.9K0
linux系统怎么看内存使用率_cpu使用率0
[使用Python监控Linux/Unix系统] 使用paramiko获取linux系统内存使用率
前面介绍了如何运用Python获取Oracle数据库的信息以及将数据存入MySQL数据库中
bsbforever
2020/08/19
4K0
Oracle表空间SYSAUX使用率很高解决案例
收到zabbix告警信息,表空间 SYSAUX 使用率>95%%,系统表空间sysaux使用率超过了95%。
星哥玩云
2022/08/16
1.5K0
Oracle表空间SYSAUX使用率很高解决案例
如何找到自己的服务器
4.点击自己云服务器的实例id后,就可以看见服务器的基本信息、弹性网卡、安全组等等。
逸轩
2021/09/16
6.8K0
EasyGBS新内核版本降低内存使用率的修复方法
TSINGSEE青犀视频开发的国标GB28181协议视频智能分析平台EasyGBS已经兼容了采集-存储-展示-告警这四大模块的内容处理,能够为大数据平台的搭建提供视频能力上的支持。目前EasyGBS正在积极进行内核的改版,力求做到更加稳定、更加高质量。
TSINGSEE青犀视频
2021/09/09
5300
如何查看Linux系统的CPU使用率?
top 命令是一个动态查看系统进程和资源使用情况的工具。它可以显示系统的整体资源使用情况,包括CPU使用率。
用户11163528
2025/03/05
2370
计算 Linux 内存使用率方法及C实现
通过获取Linux中的 /proc/stat 文件中的内容可以获取系统内存的详细信息:
宋天伦
2020/07/17
9K1
五分钟带你掌握Linux系统查看CPU使用率、内存使用率、磁盘使用率
%us:表示用户空间程序的cpu使用率(没有通过nice调度) %sy:表示系统空间的cpu使用率,主要是内核程序。 %ni:表示用户空间且通过nice调度过的程序的cpu使用率。 %id:空闲cpu %wa:cpu运行时在等待io的时间 %hi:cpu处理硬中断的数量 %si:cpu处理软中断的数量 %st:被虚拟机偷走的cpu 注:99.0 id,表示空闲CPU,即CPU未使用率,100%-99.0%=1%,即系统的cpu使用率为1%。
不吃小白菜
2021/03/02
19.3K0
Linux服务器如何释放内存空间
Linux服务器运行一段时间后,由于其内存管理机制,会将暂时不用的内存转为buff/cache,这样在程序使用到这一部分数据时,能够很快的取出,从而提高系统的运行效率,所以这也正是Linux内存管理中非常出色的一点,所以乍一看内存剩余的非常少,但是在程序真正需要内存空间时,Linux会将缓存让出给程序使用,这样达到对内存的最充分利用,所以真正剩余的内存是free+buff/cache
星哥玩云
2022/07/25
23.3K0
Linux服务器如何释放内存空间
如何在 Linux 中按内存和 CPU 使用率查找运行次数最多的进程
尽管使用了繁重的系统监控工具,但一个简单的命令可以显示系统上当前的 CPU 和内存使用情况,从而节省您的时间和精力。使用命令方便、轻巧,并且不会占用太多系统资源来显示正在进行的 CPU 和内存负载。在这篇文章中,我们将看到使用这些命令按内存和 CPU 使用率显示正在运行的进程的ps命令。
杰哥的IT之旅
2022/12/05
3.9K0
如何在 Linux 中按内存和 CPU 使用率查找运行次数最多的进程
linux服务器内存
查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大 就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了
用户8639654
2021/08/03
31.9K0
如何精准地找到问题答案
搜索,是每个开发者必备功力。然而,在实际工作中,由于所用搜索引擎的限制,总是会遇到各种各样的坑。下面罗列几个,看看你是否遇到过。
老齐
2020/05/14
6890
系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?
今天我们来探究系统CPU使用率高的情况,所以这次实验的准备工作,与上节课的准备工作基本相同,差别在于案例所用的 Docker 镜像不同。
wayn
2024/04/28
1450
系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?
购买服务器之后如何找到服务器
4.点击自己云服务器的实例id后,就可以看见服务器的基本信息、弹性网卡、安全组等等。
深蓝.
2021/10/03
8K0

相似问题

使用HTML控件创建文件上载控件

11

ASP.NET中的文件上载控件

23

asp.net/HTML文件上载控件不按预期上载多个文件

11

拖放文件上载,不使用asp.net中的文件上载控件

20

asp文件上载控件自定义文本

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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