【问题标题】:Creating property for an object during run time在运行时为对象创建属性
【发布时间】:2016-01-21 09:49:49
【问题描述】:

我正在尝试为如下所示的对象创建一个属性,但如果我键入 Object.keys(window.data),我将得到对象名称为 DENTAL[object Object]

方法如下:

function GetAppliedFilterValue(TabName, filter) { //TabName="DENTAL", filter.CoverageId = 10
    var property = TabName.concat(String(filter.CoverageId)); 
    window.data[property.toString()] = {};

我哪里出错了?

PS。对象过滤器的coverageId属性为Number类型

【问题讨论】:

  • 尝试在 concat 中使用 .toString() 。像var property = TabName.concat(filter.CoverageId.toString()); 这样的东西我怀疑你已经使用 String() 了
  • @SaurabhTiwari Nope.. .toString() 不起作用
  • 这种创建对象键的语法需要像 window.data["property"] 这样的字符串。你能不能试着安慰属性变量来看看它到底是什么……也可以试试 typeof 来确定它的类型……它应该是一个字符串。
  • "对象过滤器的coverageId属性是数字类型" - 不,数字不会产生[object Object]。
  • TabName 是一个字符串,对吧?没有理由使用concat 甚至property.toString()。只需window.data[TabName + String(filter.CoverageId)] 就足够了。

标签: javascript object properties


【解决方案1】:

谢谢@Bergi,你的建议帮助了我。

我的实现:

function GetAppliedFilterValue(TabName, filter) {
    var property = TabName + String(filter.CoverageId);
    window.data[property.toString()] = {};

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多