ECMAScript 6 (ES.next) で導入予定の Object.isObject について

Object.isObject(O) は引数 O がObject型の場合に true を返し、それ以外の型なら false を返す。 Current Working Draft - harmony:specification_drafts [ES Wiki] http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#current_working_draft ECMASctipt 3 における Type() 続きを読む
1
think49 @think49

2012-05-04 に #ES6 の Draft が更新されててObject型を判定する Object.isObject が入ってた。/ harmony:specification_drafts [ES Wiki] http://t.co/pHnnmy95

2012-05-05 19:42:48
think49 @think49

@think49 後方互換性のための実装コードは is-object.js https://t.co/6p6Yd0TC でOK. 今後は Object.isObject を拡張する形で互換性を保つと便利かもしれない。#ECMAScript #JavaScript

2012-05-05 19:47:39
テラマコ @teramako

Object.isObject(null) って、もしかして true を返す?

2012-05-09 20:39:02
テラマコ @teramako

1. If Type(o) is Object return true. の Type()の処理がどうなっているかよく分からん。

2012-05-09 20:40:41
think49 @think49

@teramako false のはずです。Type はECMAScriptでいう「型」を返す内部演算子だったと記憶しています。

2012-05-09 20:42:36
テラマコ @teramako

@think49 Type(null) は Null 型だから Object ではないってことですか。typeof とは違うんですね。

2012-05-09 20:43:45
think49 @think49

@teramako そうですね。正直、typeof 演算子は Type() に合わせて欲しかったと思ってます。 私が「typeof 演算子がわかりづらい」と常々主張している理由がそれでして…。

2012-05-09 20:47:35
テラマコ @teramako

@think49 ですね。因みにES.nextでも、"break the web" の魔法の呪詛を唱えられて、まだ typeof null === "null" になっておりませんです...

2012-05-09 20:48:59
think49 @think49

@teramako そうなんですか!? #ES6 でようやく解決されると思ったのに…。 既存の実装との共存を図るなら Object.getTypeOf() でも作ってしまえばいいんじゃないかなあ。

2012-05-09 20:56:54
テラマコ @teramako

@think49 少なくとも、まだDraftに入ってきてないです

2012-05-09 20:57:33
think49 @think49

@teramako Type() についての説明を見つけました。 http://t.co/v1OyHETI (ES3) と http://t.co/w0fiYyY8 (ES5) ですね。#ECMAScript

2012-05-09 20:57:48
テラマコ @teramako

@think49 お、やはり 8章の最初の方ので合ってたんですね。ありがとうございます。

2012-05-09 20:59:45
テラマコ @teramako

んじゃ、Object.isObject(function(){}) は true なのかな

2012-05-09 21:02:15
think49 @think49

@kanasan true だと思います。 http://t.co/pHnnmy95 からDLした working_draft_ecma-262_edition_6_5-4-12.doc ではP29の「8 Types」に #ES5 と同様の説明がありました。

2012-05-09 21:15:11
think49 @think49

@teramako 同文書のP169で「15.2.3.15 Object.isObject」が説明されていますが、Type() に依存した仕様ですので「Object型の場合のみ true を返す」と読んで差し支えないかと思います。

2012-05-09 21:15:55