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
.