Last active
April 2, 2018 16:10
-
-
Save KrzysztofPrzygoda/79d8ed445f03f30a2771d44f3c9ad93d to your computer and use it in GitHub Desktop.
JavaScript Data Types // source http://jsbin.com/sogahuj/edit?js,console
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Based on: http://bonsaiden.github.io/JavaScript-Garden/#types | |
var types = [ | |
{n: 'Array', c: Array, o: []}, | |
{n: 'new Array', c: Array, o: new Array()}, | |
{n: 'String', c: String, o: ''}, | |
{n: 'new String', c: String, o: new String()}, | |
{n: 'Number', c: Number, o: 0}, | |
{n: 'new Number', c: Number, o: new Number()}, | |
{n: 'Function', c: Function, o: function(){}}, | |
{n: 'new Function', c: Object, o: new function(){}}, | |
{n: 'Object', c: Object, o: {}}, | |
{n: 'new Object', c: Object, o: new Object()}, | |
{n: 'Boolean', c: Boolean, o: false}, | |
{n: 'new Boolean', c: Boolean, o: new Boolean()}, | |
{n: 'RegExp', c: RegExp, o: /regularexpression/}, | |
{n: 'new RegExp', c: RegExp, o: new RegExp()}, | |
{n: 'new Date', c: Date, o: new Date()}, | |
{n: 'new Error', c: Error, o: new Error()}, | |
{n: 'Null', c: Object, o: null}, | |
{n: 'Undefined', c: Object, o: undefined}, | |
]; | |
types.forEach(function(t) | |
{ | |
console.log('---------- ' + t.n + ' ----------'); | |
console.log(t.o); | |
console.log(t.c); | |
// The instanceof operator tests whether the prototype property of a constructor | |
// appears anywhere in the prototype chain of an object. | |
console.log('instanceof: ' + (t.o instanceof t.c)); | |
console.log('prototype: ' + Object.prototype.toString.call(t.o)); | |
console.log('typeof: ' + typeof t.o); | |
}); | |
// The only way to determine an object's [[Class]] value is using | |
function is(object, type) { | |
return Object.prototype.toString.call(object).search(type) >= 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment