14

ランタイムがエラーメッセージで別のオブジェクト表現を使用するようにするjavascriptの方法はありますか?

典型的なエラーメッセージ

Uncaught TypeError: Object [object Object] has no method 'toggle'

オブジェクトに よりも優れた表現を与えることができれば役に立ちます[object Object]。他の言語では、 をオーバーライドすることにより、オブジェクトのより優れた表現を出力することができますtoString()

ただし、この場合、 toString をオーバーライドしても効果がないようです。

4

6 に答える 6

4

私は a を使用して、独自のエラー メッセージtry...catchスローします。

var obj = {
  name: 'obj',
  fn: function () {
    return 'hallo';
  }
}


function hasMethod(obj, fn) {
    try {
        if (!obj[fn]) {
            var err = obj.name + ' does not have a method ' + fn;
            throw new Error(err)
        }
    } catch (e) {
        console.log(e)
    }
}

hasMethod(obj, 'moose'); // obj does not have a method moose

フィドル

于 2013-11-09T16:19:34.527 に答える
0

あなたの目的がプレーンなJavaScriptオブジェクトを文字列に変換することである場合

JSON.stringify(object) 

絶対に素晴らしい作品。ドキュメントはこちらです。

しかし、あなたが言及したエラーメッセージに「トグル」が表示されます.DOMオブジェクトで実行される一般的なJQueryトグルであると想定しています。この場合、 JSON.stringify() は機能しません。

DOM オブジェクトを文字列に変換するには、このスタックオーバーフローの投稿に従ってください

于 2013-11-20T06:52:29.040 に答える
-3

このようなものが動作するはずです:

Object.prototype.toString = function() {
  return '(OBJECT: ' + this.name + ')';
};

foo = { name: 'foo' };
bar = { name: 'bar' };
baz = {}

foo.thing(); // TypeError: Object (OBJECT: foo) has no method 'thing'
bar.thing(); // TypeError: Object (OBJECT: bar) has no method 'thing'
baz.thing(); // TypeError: Object (OBJECT: undefined) has no method 'thing'

(ノード js)

于 2013-11-09T16:01:48.777 に答える