JavaScript Basics: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 65: | Line 65: | ||
var mango = new Fruit ("Yellow", 8, "Mango", ["South America", "Central America", "West Africa"]); | var mango = new Fruit ("Yellow", 8, "Mango", ["South America", "Central America", "West Africa"]); | ||
</pre> | </pre> | ||
Line 97: | Line 88: | ||
var myCounter = new Counter(); | var myCounter = new Counter(); | ||
</pre> | |||
== Prototypes == | |||
Every object has a <code>prototype</code> property. This can be used to add attributes or methods after the constructor has been defined: | |||
<pre> | |||
Fruit.prototype.peeled = false; | |||
Fruit.prototype.peel = function() { | |||
this.peeled = true; | |||
} | |||
</pre> | |||
== Closures == | |||
Offers a way to hide data inside an object. | |||
<pre> | |||
function createIncrementer(){ | |||
var i = 0; // i is not accessible outside | |||
return { | |||
increment: function(){ | |||
return ++i; | |||
} | |||
}; | |||
} | |||
obj = createIncrementer(); | |||
obj.increment(); obj.increment(); obj.increment(); // 1, 2, 3 | |||
</pre> | </pre> |
Revision as of 18:22, 21 April 2015
Link to external Javscript file
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<script src="spectra.js" type="text/javascript" ></script>
</head>
Types
The built-in types are string
, number
, boolean
, null
, undefined
, object
.
Use typeof some_var
to get the type.
The following are considered false: false
, 0
, ""
, null
, undefined
, NaN
.
Arrays
Arrays are special objects.
var my_array = []; // make a new empty array var my_array = [1, 4, 2]; my_array.forEach( function(element){ // do something with element } my_array.filter(function(i){return i % 2 == 0}); // [4, 2] only keeps even numbers my_array.map(function(i){return i*i}); // [1, 16, 4] my_array.reduce(function(total, currentValue, index, array){ return total += currentValue;}) // 7
Strings
" Hello ".trim() // "Hello"
Objects
var new_object = {}; // make a new empty object new_object.name = "Bill"; // create a property new_object["name"] = "Bill"; // same thing for (var key in my_object){ // iterate over an object // do something with key // value is my_object[key] }
Constructors
function Fruit (theColor, theSweetness, theFruitName, theNativeToLand) { this.color = theColor; this.sweetness = theSweetness; this.fruitName = theFruitName; this.nativeToLand = theNativeToLand; this.showName = function () { console.log("This is a " + this.fruitName); } this.nativeTo = function () { this.nativeToLand.forEach(function (eachCountry) { console.log("Grown in:" + eachCountry); }); } } var mango = new Fruit ("Yellow", 8, "Mango", ["South America", "Central America", "West Africa"]);
Counter Example
function Counter() { this.things = {}; // name -> count this.add = function (name){ if (name in this.things){ this.things[name]++; } else { this.things[name] = 1; }; }; this.getCount = function(name){ if (name in this.things){ return this.things[name]; } else { return 0; }; }; }; var myCounter = new Counter();
Prototypes
Every object has a prototype
property. This can be used to add attributes or methods after the constructor has been defined:
Fruit.prototype.peeled = false; Fruit.prototype.peel = function() { this.peeled = true; }
Closures
Offers a way to hide data inside an object.
function createIncrementer(){ var i = 0; // i is not accessible outside return { increment: function(){ return ++i; } }; } obj = createIncrementer(); obj.increment(); obj.increment(); obj.increment(); // 1, 2, 3