如何在JavaScript中将字符串转换为对象?

时间:2013-01-13 08:48:11

标签: javascript

我想要创建一个接收对象名称并输出其所有属性的Web表单。为此,我写了一段代码:

var html5form = document.getElementsByClassName("html5_form");
html5form[0].onsubmit = function (e) {
    var val = e.target.querySelector("input[name=obj]").value,
        obj = window[val],
        enumObj = new obj();            
    for (prop in enumObj) {                
        console.log(prop);
    }
    return false;
}

我用对象构造函数创建了一个datalist并将其附加到输入字段。但我实际上是迭代对象实例,而不是构造函数。上面提到的代码仅在我输入DataView和ArrayBuffer等构造函数时才有效,并且不能处理Array,Number等。我的代码出了什么问题?我试过调试,但没有结果。

2 个答案:

答案 0 :(得分:1)

JavaScript没有像你想象的那样拥有标量/基元的对象。有拳击,但这是关于它。

当您在其上使用方法(例如'text'.method()(6).toString())时,会自动将字符串基元插入字符串对象。但是,我知道无法在不检查数据类型的情况下自动返回盒装值,然后自己选择正确的转换(我甚至不确定这样做是否是最佳实践)。而且,如果您要这样做,您也可以改变您的功能以正确处理原语。

另外,它能带给你什么?假设你得到一个String对象。你期望列举哪些属性?我知道的唯一属性不是属性,而是在盒装对象原型的方法中,您可以使用this引用 - 它返回标量值。

问题在于,您希望像NumberString这样的对象具有属性并像其他对象一样运行,但它们不会也不会。

答案 1 :(得分:0)

不确定这是否是您正在尝试做的事情

window.myObject = function(){};

var objectName = 'myObject';
var objectInstance = new window[objectName];

objectInstance现在包含myObject

的实例

另一方面,如果您的对象只是一个对象文字,则不应使用new关键字。

window.myObject = {};

var objectName = 'myObject';
var objectReference = window[objectName];