Skip to content

Instantly share code, notes, and snippets.

@timkg
timkg / README.md
Created March 22, 2014 05:40 — forked from mbostock/.block

A sunburst is similar to the treemap, except it uses a radial layout. The root node of the tree is at the center, with leaves on the circumference. The area (or angle, depending on implementation) of each arc corresponds to its value. Sunburst design by John Stasko. Data courtesy Jeff Heer.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
var myObj = {
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
// Closure - transporting a function outside of another function's scope. The returned function keeps reference to the inner scope, even when it is used somewhere else.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<p>Most object-oriented languages are actually class-based.</p>
<p>Javascript is object-oriented in the sense that you can create Objects without Classes.</p>
<p>Every Object in JS is created via a Constructor, implicitly or explicitly.</p>
@timkg
timkg / gist:309a6d12741638c486be
Created March 24, 2015 04:07
Map-Reduce a collection of values into a list
[1, 2, 3]
.map(function (num) {
var listItem = document.createElement('li');
listItem.textContent = num;
return listItem;
})
.reduce(function (acc, cur) {
acc.appendChild(cur);
return acc;
}, document.createElement('ul'));
function Paper() {};
Paper.prototype.beats = function( o ) {
if( o.constructor === Rock ) {
return true;
} else if ( o.constructor === Paper ) {
return false;
} else if ( o.constructor === Scissors ) {
return false;
function Paper() {
}
Paper.prototype.beats = function( o ) {
return o.beatenByPaper();
};
Paper.prototype.beatenByPaper = function() {
return false;
};
@timkg
timkg / gist:4040283
Created November 8, 2012 17:37
Async function calls (like timer or event callbacks) are not executed from the current call stack, but pushed to the end of the queue, creating their own new call stack.
function stuff() {
var start = new Date();
// notice how 'stuff' is in the the call stack
debugger;
setTimeout(function timeout() {
var end = new Date()
, diff = end - start;
// notice how 'stuff' is NOT in the call stack
debugger;
console.log( diff + 'ms have passed' );
@timkg
timkg / gist:4048050
Created November 9, 2012 20:32
Code from page 3 of the book Async Javascript
var clickCount = 0, link;
link = document.getElementById('masochist')
link.innerHTML = 'How many times can you click me?';
link.onclick = function(){
clickCount++;
link.onclick = function(){ clickCount++; };
start = new Date();
while (new Date() - start < 5000) {}
console.log(clickCount); // this will always be 1
@timkg
timkg / gist:4048408
Created November 9, 2012 21:34
Slightly altered code from page 3 of Async Javascript
var clickCount = 0, link;
link = document.getElementById('masochist')
link.innerHTML = 'How many times can you click me?';
link.onclick = function(){
clickCount++;
link.onclick = function(){ clickCount++; };
start = new Date();
while (new Date() - start < 5000) {}
console.log(clickCount); // this will always be 1