我在Chrome擴展的內容腳本中使用簡單的自定義類型。然後通過chrome.extension.sendRequest()將項目數組發送到後臺頁面。在bgpage調試器中顯示我的類型的實例沒有這些方法。而且,具有未定義值的類型屬性也會發生同樣的情況。怎麼了。爲什麼方法丟失自定義對象sendRequest()
function User(id, holder) {
this.id = id;
var hObj = {};
hObj[holder] = 'undefined'; // this is ok
this.holder = hObj;
this.Result = undefined; // this will be lost
this.Code = undefined; // this will be lost
}
// this will be lost
User.prototype.getFirstHolderType = function() {
for (h in this.holder) {
if (h) return h;
}
return false;
};
// this will be lost
User.prototype.hasHolderType = function(h_type) {
for (h in this.holder) {
if (h_type === h) return true;
}
return false;
};
//...
chrome.extension.sendRequest({id: "users_come", users: users},
function(response) {});
'toString'將包含我的方法的長字符串字面量還是有任何其他方法序列化它? – Vasya
我認爲傳遞函數的全文是這裏最好的解決方案。另外,請注意,您可能需要在函數字符串的每一端添加括號,因爲'eval(「function(){}」)'失敗,但是eval(「(function(){})」)'成功。 – apsillers