JavaScript Basics: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 14: | Line 14: | ||
The following are considered false: <code>false</code>, <code>0</code>, <code>""</code>, <code>null</code>, <code>undefined</code>, <code>NaN</code>. | The following are considered false: <code>false</code>, <code>0</code>, <code>""</code>, <code>null</code>, <code>undefined</code>, <code>NaN</code>. | ||
== Strings == | |||
<pre> | |||
" Hello ".trim() // "Hello" | |||
</pre> | |||
== Arrays == | == Arrays == | ||
Line 27: | Line 32: | ||
my_array.reduce(function(total, currentValue, index, array){ return total += currentValue;}) | my_array.reduce(function(total, currentValue, index, array){ return total += currentValue;}) | ||
// 7 | // 7 | ||
</pre> | |||
== Objects == | |||
<pre> | |||
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] | |||
} | |||
</pre> | </pre> | ||
Line 40: | Line 56: | ||
addx10 = adder.add.bind({x:10, y:20}) | addx10 = adder.add.bind({x:10, y:20}) | ||
addx10() // 30 | addx10() // 30 | ||
</pre> | </pre> | ||
Revision as of 18:33, 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
.
Strings
" Hello ".trim() // "Hello"
Arrays
Arrays are special objects that get their methods from Array.prototype
.
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
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] }
Functions
Functions are special objects that get their methods from Function.prototype
.
var adder = { x: 1, y: 2, add: function(){return this.x + this.y;} } adder.add() // 3 adder.add.apply({x:2, y:4}) // 6 addx10 = adder.add.bind({x:10, y:20}) addx10() // 30
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