JavaScript Code Example


JavaScript Code Example

execute-js is a good Firefox add-on that make you execute and test your JavaScript code.

How to add method to Built-in classes

String.prototype.endsWith = function(c) {

return (c == this.charAt(this.length-1))

}

Using Object Properties as Arguments

This would allow arguments to be passed as name/value pairs in any order.

function easycopy(args) {

arraycopy(args.from,

args.from_start || 0, // Note default value provided

args.to, args.to_start || 0, args.length);

}

easycopy({from: a, to: b, length: 4});

How to simulate class in javascript?


function Rectangle(w, h) {

this.width = w; this.height = h;

}

Rectangle.UNIT = new Rectangle(1,1); // public static property

Rectangle.prototype.area = function( ) {

with(this) {return width*height;}

}

Rectangle.prototype.toString = function( ) {

return "(" + this.width + "," + this.height + ") ";

}

Private Members

function Rectangle(w, h) {

var width = w;

var height = h;

this.area = function( ) {

return width*height;

}

}

Public static method

Rectangle.getType = function () { return "Rectangle" }; Rectangle.prototype.getType = Rectangle.getType;

This will have the static methods working with an instance.

How to define subclass

function PositionedRectangle(x, y, w, h) {

Rectangle.call(this, w, h); // call superclass constructor

this.x = x;

this.y = y;

}

PositionedRectangle.prototype = new Rectangle( );

delete PositionedRectangle.prototype.width;

delete PositionedRectangle.prototype.height;

PositionedRectangle.prototype.constructor = PositionedRectangle;

PositionedRectangle.prototype.contains = function(x,y) {

return (x > this.x && x < this.x + this.width &&

y > this.y && y < this.y + this.height);

}

// demonstrate how to call overridden methods

PositionedRectangle.prototype.toString = function( ) {

return "(" + this.x + "," + this.y + ") " +

Rectangle.prototype.toString.apply(this);

}

Determining Object type

typeof is useful primarily for distinguishing primitive types from objects.

function getType(x) {

if (x == null) return "null";

var t = typeof x;

if (t != "object") return t;

var c = Object.prototype.toString.apply(x); // Returns "[object class]"

c = c.substring(8, c.length-1); // Strip off "[object" and "]"

if (c != "Object") return c;

// If we get here, c is "Object". Check to see if

// the value x is really just a generic object.

if (x.constructor == Object) return c; // Okay the type really is "Object"

// For user-defined classes, look for a string-valued property named

// classname, that is inherited from the object's prototype

if ("classname" in x.constructor.prototype && // inherits classname

typeof x.constructor.prototype.classname == "string") // its a string

return x.constructor.prototype.classname;

// If we really can't figure it out, say so.

return "";

}

Design pattern

Singleton

Instance in a Closure

function Universe() {

var instance = this;

// the rewritten constrictor is executed after the first time

Universe = function () {

return instance;

};

}

Use Static Property

function Universe() {

if (typeof Universe.instance === "object") {

return Universe.instance;

}

Universe.instance = this;

}

Javascript Basic

Comment: //, /* */

Creating Object

var person = new Object();

person.name = "Nicholas";

person.sayName = function(){alert(this.name);};

Array

var a = new Array( );

var a = new Array(1.2, "JavaScript", true, { x:1, y:3 });

var a = [1.2, "JavaScript", true];

a. push({ x:1, y:3 });

Function

Function Literals(lambda function)

var square = function(x) { return x*x; }

var square = new Function("x", "return x*x;"); // not recommended

var f = function fact(x) { if (x <= 1) return 1; else return x*fact(x-1); };

Named function expressions

[1,2,3,4,5].map(function factorial(n) {

return (!(n>1))? 1 : factorial(n-1)*n;

});

Optional Arguments

function f(o, /* optional */ a) {

a = a || []; // or if (!a) a = [];

}

Date

Format to yyyy-MM-dd:

var date = new Date();

var dateStr = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();

Note: January is 0, February is 1, and so on.

var date = Date.parse("Jul 8, 2005");

Note: it returnes a number, not a Date object.

date = new Date(date);

Map

var Map = {"one": 1, "two": "two","three": 3.0};

Resource

JavaScript: The Definitive Guide

JavaScript Patterns

Private Members in JavaScript

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)