Javascript type of custom object

Viewed 33527

How can I check if my javascript object is of a certain type.

var SomeObject = function() { }
var s1 = new SomeObject();

In the case above typeof s1 will return "object". That's not very helpful. Is there some way to check if s1 is of type SomeObject ?

5 Answers

While instanceof is a correct answer it sure is ugly syntax. I offer that if you are creating custom objects you can add your own property for type and check against that like so...

var Car = function(){
    this.type = Object.defineProperty(this, "type", {value:"Car"});
}

This would create an immutable property called type that lives with the object. If you were using the Class syntax you could make it static as well.

... somewhere later ...

function addCar(car){
    if (car.type != "Car"){
        throw Error("invalid type for car");
    }

...

I think this solution is easy to implement, more intuitive, and thus easier for others to use and maintain.

Related