Skip to content

Instantly share code, notes, and snippets.

@shaunwallace
shaunwallace / gist:eca81bab58f7924f9219
Created November 19, 2014 12:46
Object.getOwnPropertyNames()
var obj11 = Object.create(Object.prototype, {
foo : {
value : 27
},
bar : {
value : 39,
enumerable : true
}
});
var obj10 = {
x : 1,
y : 2,
z : 3
};
var arr1 = ['a', 'b', 'c'];
Object.keys( obj10 ); // returns ["x", "y", "z"]
Object.keys( arr1 ); // returns ["0", "1", "2"]
@shaunwallace
shaunwallace / gist:5933ff0b22b51de41f3c
Created November 19, 2014 12:40
Object.getOwnPropertyDescriptor()
var obj8 = {};
Object.defineProperties(obj8, {
foo : {
value : 100,
configurable : false,
enumerable : true
},
bar : {
value : 300,
@shaunwallace
shaunwallace / gist:77d81ba16a754071475c
Created November 19, 2014 12:37
Object.defineProperties()
var obj8 = {};
Object.defineProperties(obj8, {
foo : {
value : 100,
configurable : false,
enumerable : true
},
bar : {
value : 300,
@shaunwallace
shaunwallace / gist:a4e65d8b526bd4a284a9
Created November 19, 2014 12:34
Object.defineProperty()
var obj4 = {}; // create a new empty object
Object.defineProperty(obj4, 'x', {
value : 'Some generic string',
writable : true,
enumerable : true,
configurable : true
});
obj4.x; // returns "Some generic string"
@shaunwallace
shaunwallace / gist:909f92960f605998b944
Created November 19, 2014 12:28
Object.getPrototypeOf()
// Object.getPrototypeOf(obj);
var obj = Object.create({}); // creates an empty object and is equivalent to obj = {} or obj = Object.create(Object.prototype)
var obj1 = {
foo : 1,
bar : function() {
return 'Bar method called';
}
};
var obj3 = Object.create(obj1, {
@shaunwallace
shaunwallace / gist:0c4f0ffd89325612f8ed
Last active April 15, 2016 13:50
Object.create()
/*
Object.create();
creates a new object with the specified prototype object and properties
object.create(proto[, propertiesObject]);
*/
var obj = Object.create({}); // creates an empty object and is equivalent to obj = {} or obj = Object.create(Object.prototype)
var obj1 = {
foo : 1,
@shaunwallace
shaunwallace / gist:91f74ec3173d16c44fce
Created November 19, 2014 12:05
Arguments.callee
// this would not work since unnamed functions could not be passed and then called again inside of themselves
[1,2,3,4,5].map(function (n) {
return !(n > 1) ? 1 : /* what goes here? */ (n - 1) * n;
});
// arguments.callee was added so you could do the following
[1,2,3,4,5].map(function (n) {
return !(n > 1) ? 1 : arguments.callee(n - 1) * n;
});
@shaunwallace
shaunwallace / gist:7c6ac1279cf96bfe7371
Created November 19, 2014 12:00
Making eval and arguments simpler
// the following will all throw errors
eval = true;
arguments++;
++eval;
var eval;
function arguments();
function eval();
@shaunwallace
shaunwallace / gist:1247679fb63a21de3007
Created November 19, 2014 11:58
Simplifying Variable Uses
var foo = true;
var evalFoo = eval("'use strict'; var foo = false;");
assert( foo === true );
assert ( evalFoo === false );