Skip to content

Instantly share code, notes, and snippets.

@e-schultz
Last active September 3, 2015 12:17
Show Gist options
  • Select an option

  • Save e-schultz/a2aa0cb2a27ee0028102 to your computer and use it in GitHub Desktop.

Select an option

Save e-schultz/a2aa0cb2a27ee0028102 to your computer and use it in GitHub Desktop.
ES6 Fiddles

Cheap currying,

let logger = store => next => action => {
// middleware
}

// becomes

var logger = function logger(store) {
  return function (next) {
    return function (action) {
      // middleware
    };
  };
};

// simple make logger 

let makeLogger = message => error => {
  console.log(message,error);
}

let myLogger = makeLogger('message');

myLogger('you blew it');

// es5

'use strict';

var makeLogger = function makeLogger(message) {
  return function (error) {
    console.log(message, error);
  };
};

var myLogger = makeLogger('message');

myLogger('you blew it');

Destructing for defaults/extend

let simpleExtend = ({obj}) => {
  return {
  ...obj
  ,myNew: () => { console.log('hi') }
  }
}

const src = { 
  name: 'evan'
};

const dest = simpleExtend(src);
dest.myNew();

// becomes
'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var simpleExtend = function simpleExtend(_ref) {
  var obj = _ref.obj;

  return _extends({}, obj, { myNew: function myNew() {
      console.log('hi');
    }
  });
};

var src = {
  name: 'evan'
};

var dest = simpleExtend(src);
dest.myNew();

Shallow copies

let src = { 
  prop: '1',
  nested: {
  obj: 'prop 2'
  }
};

let clone = {...src};
let copy = src;

console.log(clone === src);
console.log(copy === src);
console.log(clone.obj === src.obj) // watch out for deep objects

/// becomes

'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var src = {
  prop: '1',
  nested: {
    obj: 'prop 2'
  }
};

var clone = _extends({}, src);
var copy = src;

console.log(clone === src);
console.log(copy === src);
console.log(clone.obj === src.obj);
///

class fiddlings

class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    
    this.sayHello = () => { // not on the prototype
      console.log(firstName, 'is am saying hello')
    }
  }

  sayName() { // on the prototype
    console.log(this.firstName, this.lastName)
  }
}

const evan = new Person('evan', 'schultz');
evan.sayName();
const bob = new Person('bob', 'doe');
bob.sayName();

Person.prototype.sayName = function() {
  console.log("Hi", this.firstName, this.lastName);
}

evan.sayName();
bob.sayName();

evan.sayName = function() {
  console.log("Hi there", this.firstName, this.lastName);
}


evan.sayName();
bob.sayName();

evan.sayHello();
bob.sayHello();

evan.sayHello = () => { console.log('no') }

evan.sayHello();
bob.sayHello();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment