1

我什么时候应该使用第一个符号:

var object = {
    a: function() {
        // object.a method body
    },
    b: function() {
        // object.b method body
    },
    c: function() {
        // object.c method body
    },
};

第二个是什么时候?

function Class() {};

Class.prototype.a = function() {
    // object.a method body
};

Class.prototype.b = function() {
    // object.b method body
};

Class.prototype.c = function() {
    // object.c method body
};

var object = new Class();
4

1 回答 1

2

主要优点是在第二种情况下,所有实例共享函数,这使得对象更轻。它明确地将对象定义为概念上类的实例。

但正确的语法是

function MyClass(){
}
MyClass.prototype.a = function(){
};
...
var o = new MyClass();

它还允许您定义继承链:

function OtherClass(){
}
OtherClass.prototype = new MyClass(); // makes OtherClass extend MyClass
OtherClass.prototype.b = function(){
};
...
var o2 = new OtherClass();

o2兼具OtherClass和的功能MyClass

MDN 在其Introduction to Object-Oriented JavaScript中提供了更多详细信息。

于 2013-02-15T18:55:14.397 回答