1

jquery を使用しているときにエラーが発生しました。その原因を知りたいです。

ここに私のコードの一部があります

function Wbook(name){
this.name = name;
}

Wbook.prototype.GetHTML = function() {

Object.defineProperty(this, "GetHTML", {enumerable : false,
                           configurable : true});

var html ='<h1>TEST1</h1>';
return html;
};

var rs = {};

rs.WB = new Wbook('test1');

var foo = rs.WB.GetHTML(); 
$(foo).appendTo('div#id1'); // This works

$(rs.WB.GetHTML()).appendTo('div#id1'); 
// This doesn't work >> TypeError: rs.WB.GetHTML is not a function

セクションにコメントすれば仕事に取り掛かることもできるObject.definePropertyので、これは列挙可能性と関係があるのではないかと疑っていますが、よくわかりません

//編集: Jfiddlers.WB.GetHTML()の作成中に、2 回目の実行時に常に失敗していることに気付きました :-/. (セクションにコメントするとうまくいきObject.definePropertyます)

4

1 に答える 1

1

最初に呼び出す.GetHTML()と HTML が返されますが、その過程で、Object.defineProperty呼び出しによって値のない新しいプロパティでメソッドが上書きされます。.GetHTML

.GetHTMLしたがって、 by thenの値が であるため、2 回目の呼び出しでエラーが発生することは驚くべきことではありませんundefined

コードの目的が列挙可能でないことを確認することであるGetHTML場合は、次のコードを使用してメソッドを直接追加しWbook.prototype、(自動的に) 列挙不可に設定します。

Object.defineProperty(Wbook.prototype, 'GetHTML', {
    value: function() {
        ...
    }
});
于 2013-10-16T18:33:25.633 に答える