日期:2014-05-16  浏览次数:20306 次

现代Javascript之对象创建
转载自重庆PHp:http://www.php-chongqing.com/index.php/article/26
对象是Javascript的基础,在Javascript中所有的东西都是面向对象的。Javascript是一门彻底的面向对象的语言。
在Javascript中创建对象的方式有很多种,你可以使用以下几种方式在Javascript中创建对象。

利用内置Object对象,完成对象创建
var obj = new Object();  // 创建一个新的Object对象,把这个对象的实例存入变量'obj'中。

// 为'obj'对象设置属性和方法
obj.val = 5;
obj.click = function() {
    alert("hello");
}


函数式创建
因为Javascript中并没有类(class)的概念,任何函数都可以被实例化为一个对象。
// 创建一个新的User构造函数
function User(name, age) {
    this.name = name;
    this.age = age;
}
var user = new User();
alert("name:" + user.name);

在上面的代码中,我们定义了函数User(),接着我们执行new User(),函数怎么能new?
在Javascript中函数就是对象,好吧,你可以把函数User()理解为构造函数,所以,你可以执行new User()得到一个User()对象的实例。
晕了没?漂移的Javascript!

简单对象创建
var obj = {
    val: 5,
    click: function() {
        alert("hello");
    }
}

简单对象使用{...}简写方式来创建对象,结合键值对(key/value)来定义属性。
用Java或是其它面向对象语言来理解,上述代码相当于定义了一个Class类,然后实例化了这个Class,并把这个实例赋值给变量obj。
简单对象,在Javascript非常常用,因为它使用起来简单方便。

原型方式创建对象(推荐)
// 创建一个新的User构造函数
function User(name, age) {
    this.name = name;
    this.age = age;
}

// 将一个新的函数添加到此对象的prototype对象中
User.prototype.getName = function() {
    return this.name;
}

// 并再给此prototype对象添加一个函数,
User.prototype.getAge = function() {
    return this.age;
}

// 实例化一个新的User对象
var user = new User("Bob", 44);
user.getAge();

我们推荐使用原型方式来定义Javascript对象,Javascript的每个对象/函数,上面已经说了函数其实也是对象,都有一个prototype属性,
你可以把prototype属性理解为对象对自己实例的一个引用。