「オブジェクト」の代わりにカスタムタイプを返す方法はありますか? 次のケースでは、「i16」などを返したいと思います
>function Int16(v) { this.v=v }; var n = new Int16(10);
>typeof n
"object"
>Object.prototype.toString.call(n)
"[object Object]"
「オブジェクト」の代わりにカスタムタイプを返す方法はありますか? 次のケースでは、「i16」などを返したいと思います
>function Int16(v) { this.v=v }; var n = new Int16(10);
>typeof n
"object"
>Object.prototype.toString.call(n)
"[object Object]"
いいえ、オーバーロードできませんtypeof
— 常に基本型を返します。
この例では、constructor プロパティを使用できます。
function Int16(v) { this.v=v };
> var n = new Int16(10);
> n.constructor.name
"Int16"
> n.constructor === Int16
true
カスタムの「typeof」プロパティをクラスに追加します。次に、(テストされていない)のような関数を用意します。
mytypeof : function (v) {
type = typeof v;
return type === "object" && typeof(v["typeof"]) != "undefined" ? v["typeof"] : type;
}