のために働いていない、私は、次の読み取り:{Symbol.toStringTag}は開始基準点に対するエラーオブジェクト
カスタマイズES6•よく知られているシンボルを介し
http://2ality.com/2015/09/well-known-symbols-es6.html
•.. 。そして&上述の例/コードセクションに基づく:デフォルトのtoStringタグ○
http://2ality.com/2015/09/well-known-symbols-es6.html#default-tostring-tags
○
...私は1つのまたは両方の以下のアプローチは、それが例えば「console.log(returnVal)
」で使われているとき、私は「エラーオブジェクト」の動作を無効にできるようになることを期待する:
console.log("Approach #1");
class CoolError extends Error {
constructor (args) {
super(args);
}
[Symbol.toPrimitive] (hint) {
return "*************" + this.name + " : " + this.message;
// note: I shouldn't need this, however, it doesn't work either...
}
[Symbol.toStringTag] (hint) {
return ">>>>>>>>>>>>>" + this.name + " : " + this.message;
}
}
returnVal = new CoolError("errMsg");
console.log("returnVal[Symbol.toPrimitive] === " + returnVal[Symbol.toPrimitive]);
console.log(" ");
console.log(returnVal);
console.log(">");
console.log(" >");
console.log(" >");
console.log(" >");
console.log("Approach #2");
returnVal = new Error("errMsg");
console.log("returnVal[Symbol.toStringTag] === " + returnVal[Symbol.toStringTag]);
returnVal[Symbol.toStringTag] = function (hint) {return "*************" + this.name + " : " + this.message};
console.log("returnVal[Symbol.toStringTag] === " + returnVal[Symbol.toStringTag]);
console.log(" ");
console.log(returnVal);
... ...しかし、そのような運がありません...どちらの場合も、console.log(returnVal)ステートメントはエラースタックトレース全体を返します(これは私が避けようとしているものです)。私は成功したカスタムオブジェクトの振る舞いを「設定する」ことを指摘したいと思い
:
だから私は一般的なアプローチは、「働く」を知って、私はちょうどそれがに関して動作するように見えることはできません組み込みのErrorオブジェクトに渡します。
class AnswerToLifeAndUniverseAndEverything {
[Symbol.toPrimitive] (hint) {
console.log(typeof hint);
console.log(hint);
if (hint === 'string') {
console.log('string');
return 'Like, 42, man';
} else if (hint === 'number') {
console.log('number');
return 42;
} else {
console.log('default');
// when pushed, most classes (except Date) default to returning a number primitive
return 42;
}
}
}
var answer = new AnswerToLifeAndUniverseAndEverything();
console.log( Number(answer) + " === 42");
console.log( String(answer) + " === 'Like, 42, man'");
(可能ならば、それは両方の試みを使用して動作するためにも、私がしたいが、#1 &上記の#2に近づく。)
任意のアイデア?