簡體   English   中英

如何在JavaScript中將字符串轉換為對象?

[英]How to convert string into object in 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;
}

我用對象構造函數創建了一個數據列表,並將其附加到輸入字段。 但是我實際上是在迭代對象實例,而不是構造函數。 上面提到的代碼僅在我輸入DataView和ArrayBuffer之類的構造函數時才起作用,而對Array,Number等不起作用。 我的代碼有什么問題? 我嘗試調試,但沒有結果。

JavaScript沒有您所想的標量/基元對象。 有拳擊,但僅此而已。

例如,當您在字符串對象上使用諸如'text'.method()(6).toString()類的方法時,會自動將其'text'.method()為String Object。 但是,在不檢查數據類型然后自己選擇正確的轉換的情況下,我無法自動返回裝箱的值(而且我不確定這樣做是否是最佳實踐)。 而且,如果要執行此操作,也可以更改函數以正確處理原語。

另外,它將為您帶來什么? 假設您有一個String對象。 您希望在此枚舉哪些屬性? 對於此類事情,我知道的唯一屬性不是屬性,而是在裝箱對象原型的方法中,您可以使用this引用-返回標量值。

問題是您期望諸如NumberString類的對象具有屬性並像其他對象一樣工作,但是它們不存在或不存在。

不確定這是否是您要嘗試做的

window.myObject = function(){};

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

現在, objectInstance包含myObject的實例

另一方面,如果您的對象只是對象文字,則不應使用new關鍵字。

window.myObject = {};

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM