Skip to content

Instantly share code, notes, and snippets.

Erik Arvidsson arv

Block or report user

Report or block arv

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View arrow-super.js
'use strict';
class Base {
constructor(x) {
this.x = x;
}
}
let f;
class D1 extends Base {
constructor() {
View .js
createPropertyAccessor: function(name, ignoreWrites) {
var proto = this.prototype;
var privateName = name + '_';
var privateObservable = name + 'Observable_';
Object.defineProperty(proto, name, {
get: function() {
var observable = this[privateObservable];
if (observable)
observable.deliver();
@arv
arv / test.js
Created Feb 20, 2015
Map -0 bug
View test.js
var assert = {
equal: function(x, y) {
if (x === y) return;
throw new Error();
},
isTrue: function(x) {
if (x) return;
throw new Error();
}
};
@arv
arv / gist:d9082aea49e47657bc21
Last active Aug 29, 2015
Custom Elements with @@create
View gist:d9082aea49e47657bc21

At the July TC39 meeting we decided to explore removing @@create in favor of a model where super() in a [[Construct]] call creates the instance object. To correctly know how to create the instance and set the prototype a [[Construct]] call gets an implicit receiver which is the constructor function new was called with.

class Base {
  constructor() {
    var object = Object.create(new*.prototype);  // new binding needs new syntax...
                                                 // bikeshed...
    myWeakMap.set(object, myHiddenData);
    return object;
  }
@arv
arv / 0_reuse_code.js
Created Jul 16, 2014
Here are some things you can do with Gists in GistBox.
View 0_reuse_code.js
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@arv
arv / 13.10.4.md
Last active Aug 29, 2015
Unscopables spec update
View 13.10.4.md

13.10.4 Runtime Semantics: Evaluation

WithStatement : with ( Expression ) Statement

  1. Let val be the result of evaluating Expression.
  2. Let obj be ToObject(GetValue(val)).
  3. ReturnIfAbrupt(obj).
  4. Let oldEnv be the running execution context’s LexicalEnvironment.
  5. Let newEnv be NewObjectEnvironment(obj, oldEnv).
@arv
arv / x.md
Last active Aug 29, 2015
@@new and @@create
View x.md
class B {
  constructor(x) {
    this.x = x;
  }
  static [Symbol.create]() {
    var o = super();
    weakMap.set(o, 123456789);  // Dom wrapper foo
    return o;
  }
View designer.html
<link rel="import" href="../core-scaffold/core-scaffold.html">
<link rel="import" href="../core-header-panel/core-header-panel.html">
<link rel="import" href="../core-menu/core-menu.html">
<link rel="import" href="../core-item/core-item.html">
<link rel="import" href="../core-icon-button/core-icon-button.html">
<link rel="import" href="../core-toolbar/core-toolbar.html">
<link rel="import" href="../core-menu/core-submenu.html">
<link rel="import" href="../google-map/google-map.html">
<polymer-element name="my-element">
@arv
arv / createAttributeNS.js
Created Mar 13, 2014
Implementation of createAttributeNS and setAttributeNodeNS
View createAttributeNS.js
if (!Document.prototype.createAttributeNS) {
Document.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {
var dummy = this.createElement('dummy');
dummy.setAttributeNS(namespaceURI, qualifiedName, '');
var attr = dummy.attributes[0];
dummy.removeAttributeNode(attr);
return attr;
};
}
@arv
arv / Branded.js
Last active Aug 29, 2015
Secure shadow dom
View Branded.js
(function() {
'use strict';
function uncurryThis(f) {
return f.call.bind(f);
}
var ShadowRoot = window.ShadowRoot;
var createShadowRoot = uncurryThis(Element.prototype.createShadowRoot);
var ownerDocumentGetter = uncurryThis(Object.getOwnPropertyDescriptor(Node.prototype, 'ownerDocument').get);
You can’t perform that action at this time.