クロム拡張のコンテンツスクリプトで単純なカスタムタイプを使用しています。 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