如何检查返回的值是否为JS.Hash?

时间:2011-06-14 14:59:31

标签: javascript js.class

我正在玩JS.Class v.3.0 http://jsclass.jcoglan.com/,我想找到一种方法来检测对象的实例。

            var Car = new JS.Class({
                hColors : new JS.Hash([]),

                initialize : function() {
                    this.hColors.store( "1", "red " ),
                    this.hColors.store( "2", "green " ),
                    this.hColors.store( "3", "blue " )
                },

                getColors : function( colorId, returnHash ) {
                    if ( this.hColors.get( colorId ) )
                    {
                        var currentObjects = this.hColors.get( colorId );

                        if ( returnHash )
                        {
                            return new JS.Hash([
                                colorId, currentObjects 
                            ]);
                        }

                        return currentObjects;
                    }

                    return this.hColors;
                }
            });

            var F150 = new Car();

            var F150Colors = F150.getColors(); //Hash:{1=>red ,2=>green ,3=>blue }
            //var F150Colors = F150.getColors( "2", false ); //String:green
            //var F150Colors = F150.getColors( "2", true ); //Hash:{2=>green }

            //How do I test if F1250 is an instance of JS.Hash?

正如您所看到的,getColors方法可以接受两个参数,这两个参数将返回整个哈希值,一个包含1个值的选定哈希值,或者只是选定的值。

问题是:我如何检查F150ColorsJS.Hash的实例?

解决方案:typeof F150Colors == "string"是不够的,因为最终,我的hColors将包含对象({})。一切都是typeof F150Colors == "object"

谢谢!

1 个答案:

答案 0 :(得分:4)

if (F150Colors instanceof JS.Hash)