lang/type

Unstable

Functions for working with type detection.

Globals

Functions

isUndefined(value)

Returns true if value is undefined, false otherwise.

let { isUndefined } = require('sdk/lang/type');

var foo;
isUndefined(foo); // true
isUndefined(0); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is undefined.

isNull(value)

Returns true if value is null, false otherwise.

let { isNull } = require('sdk/lang/type');

isNull(null); // true
isNull(false); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is null.

isString(value)

Returns true if value is a String, false otherwise. Uses typeof operator to check type, and will only properly detect string primitives: for example, a string created with new String() will always return false.

let { isString } = require('sdk/lang/type');

isString('my string'); // true
isString(100); // false
isString('100'); // true
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a String.

isNumber(value)

Returns true if value is a Number, false otherwise. Uses typeof operator to check type, and will only properly detect number primitives: for example, a number created with new Number() will always return false.

let { isNumber } = require('sdk/lang/type');

isNumber(3.1415); // true
isNumber(100); // true
isNumber('100'); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a Number.

isRegExp(value)

Returns true if value is a RegExp, false otherwise.

let { isRegExp } = require('sdk/lang/type');

isRegExp(/[^\.]*\.js$/); // true
isRegExp(new RegExp('substring')); // true
isRegExp(1000); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a RegExp.

isDate(value)

Returns true if value is a Date, false otherwise.

let { isDate } = require('sdk/lang/type');

isDate(new Date()); // true
isDate('3/1/2013'); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a Date.

isFunction(value)

Returns true if value is a Function, false otherwise.

let { isFunction } = require('sdk/lang/type');

let fn = function () {};
isFunction(fn); // true;
isFunction(otherFn); // true;
isFunction(function () {}); // true;

function otherFn () {}
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a Function.

isObject(value)

Returns true if value is an Object and not null, false otherwise.

let { isObject } = require('sdk/lang/type');

isObject({}); // true
isObject(new Class()); // true
isObject(null); // false
isObject(5); // false

function Class () {}
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is an Object.

isArray(value)

Returns true if value is an Array, false otherwise. Uses native Array.isArray.

let { isArray } = require('sdk/lang/type');

isArray([]); // true
isArray({}); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is an Array.

isArguments(value)

Returns true if value is an array-like arguments object, false otherwise.

let { isArguments } = require('sdk/lang/type');

function run () {
  isArguments(arguments); // true
  isArguments([]); // false
  isArguments(Array.slice(arguments)); // false
}
run(1, 2, 3);
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is an arguments object.

isPrimitive(value)

Returns true if value is a primitive value: that is, any of null, undefined, number, boolean, or string. Returns false if value is not a primitive value.

let { isPrimitive } = require('sdk/lang/type');

isPrimitive(3); // true
isPrimitive('foo'); // true
isPrimitive({}); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a primitive.

isFlat(value)

Returns true if value is a direct descendant of Object.prototype or null. Similar to jQuery's isPlainObject.

let { isFlat } = require('sdk/lang/type');

isFlat({}); // true
isFlat(new Type()); // false

function Type () {}
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is a direct descendant of Object.prototype or null.

isEmpty(value)

Returns true if value is an Object with no properties and false otherwise.

let { isEmpty } = require('sdk/lang/type');

isEmpty({}); // true
isEmpty({ init: false }); // false
Parameters

value : object
The variable to check.

Returns

boolean : Boolean indicating if value is an Object with no properties.

isJSON(value)

Returns true if value is a string, number, boolean, null, array of JSON-serializable values, or an object whose property values are themselves JSON-serializable. Returns false otherwise.

let { isJSON } = require('sdk/lang/type');

isJSON({ value: 42 }); // true
isJSON({ fn: function () {} ); // false
Parameters

value : mixed
The variable to check.

Returns

boolean : Boolean indicating if value is an Array/flat Object containing only atomic values and other flat objects.

instanceOf(value, Type)

Returns true if value is an instance of a given Type. This is similar to the instanceof operator. The difference is that the Type constructor can be from a scope that has a different top level object: for example, it could be from a different iframe, module or sandbox.

let { instanceOf } = require('sdk/lang/type');

instanceOf(new Class(), Class); // true
function Class() {}
Parameters

value : object
The variable to check.

Type : object
The constructor to compare to value

Returns

boolean : Boolean indicating if value is an instance of Type.

source(value, indent, limit)

Returns the textual representation of value, containing property descriptors and types of properties contained within the object.

let { source } = require('sdk/lang/type');

var obj = {
  name: undefined,
  twitter: '@horse_js',
  tweets: [
    { id: 100, text: 'What happens to you if you break the monad laws?' },
    { id: 101, text: 'JAVASCRIPT DUBSTEP GENERATOR' }
  ]
};

console.log(source(obj));
// Prints the below
/*
{ // [object Object]
    // writable configurable enumerable
    name: undefined,
    // writable configurable enumerable
    twitter: "@horse_js",
    // writable configurable enumerable
    tweets: [
        { // [object Object]
            // writable configurable enumerable
            id: 100,
            // writable configurable enumerable
            text: "What happens to you if you break the monad laws?",
            "__proto__": { // [object Object]

            }
        },
        { // [object Object]
            // writable configurable enumerable
            id: 101,
            // writable configurable enumerable
            text: "JAVASCRIPT DUBSTEP GENERATOR",
            "__proto__": { // [object Object]

            }
        }
    ],
    "__proto__": { // [object Object]

    }
}
*/
Parameters

value : mixed
The source object to create a textual representation of.

indent : string
Optional. String to be used as indentation in output. 4 spaces by default.

limit : number
Optional. Number of properties to display per object.

Returns

string : The textual representation of value.