【发布时间】:2016-05-12 15:30:42
【问题描述】:
假设我有一个对象:
var obj = {
foo:"bar",
fizz:"buzz"
};
我需要像这样动态访问该对象的属性:
var objSetter = function(prop,val){
obj[prop] = val;
}
没有问题,除了prop 需要不区分大小写,以防属性名称以Foo 而不是foo 形式传递给函数。
那么如何不区分大小写按名称指向对象的属性呢?如果可能,我想避免迭代整个对象。
【问题讨论】:
-
你不能。语言区分大小写。想想
obj = {foo: true, Foo: false} -
始终保持您的实际属性名称全部小写(或大写),然后在查询时进行转换。
-
查看要实现的 JavaScript 代理对象实际上是一种更改通配符 getter 的方法:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
不要这样做。停止提供允许草率开发的机制。键是区分大小写的。如果您允许其他人使用不同大小写的密钥,那么您就允许他们创建难以维护的蹩脚代码,更不用说速度较慢,因为您必须运行特殊代码以允许密钥在不应该匹配时匹配。
-
@Intervalia 除了某些事情是不区分大小写的,不管你个人感觉如何。例如,如果我想检查 HTTP 标头,它们不区分大小写。我非常希望他们不是,但事实是他们是。随意使用 w3。
标签: javascript object properties