what's going on that made this necessary?
Relative to this system, what is changing>
A Pen by sean-roberts on CodePen.
<script> | |
var Constants = { | |
saveURL: 'http://random/birthday/saveimage.php', | |
w: 500, | |
h: 500, | |
x: 200, | |
y: 200 | |
}; |
// Use Gists to store code you would like to remember later on | |
console.log(window); // log the "window" object to the console |
// test gist http://jsfiddle.net/fJPkr/1/ | |
var handler = {}; | |
(function(h){ | |
//holds the topics | |
var topics = {}, | |
subUid = 0; | |
h.publish = function(topic, args){ | |
//only publish topics that were subscribed to |
/* | |
The different ways to create an object | |
*/ | |
/* | |
Example object needs to have this heirachy | |
/* | |
Notes from Eric Elliott's talk at the fluent conference | |
JavaScript has FREEDOM. | |
In classical inheritance you have tight coupling brought on by the parent-child relationship. This is good in some areas but as the project grows, making changes to the parent that ripple through the descendants can be a big burden and error/bug prone. Thus, the need for duplication by necessity. This is the situation where you have a class that does almost everything you want but it needs to do something a little differently so you create a very identical class for your new need. This is caused by the gorilla banana problem. Where you want a banana but what you got was a gorilla holding the banana and the entire jungle. The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. | |
JavaScript has inheritance that does not have these problems. | |
"Program to an interface, not an implementation." | |
"Favor object composition over class inheritance." |
//this foo function is really saying, | |
//"Hey, I am expecting about 3 arguments but give me what you can" | |
function foo(a, b, c){ | |
console.log(a,b,c); | |
} | |
//lets ask foo to take more and less parameters than expected | |
foo("anArg"); // logs in console => anArg undefined undefined |
foo(1); | |
function foo(a){ | |
var b = 2; | |
bar(3); | |
function bar(c){ | |
//all parent variables are visible and editable from here | |
console.log(a); |
// start with at string | |
var s = "my string"; | |
//change its value (remember this changing of value is by value not reference) | |
s.toUpperCase(); | |
// assign it to t | |
var t = s; |