2012-07-13 107 views
1

在javascript中声明对象的最佳方式是什么?声明对象的最佳方式是什么?

这一个

var Class = function(){}; 

Class.prototype.print = function(){ 
    console.log('hello world'); 
}; 

或这一个

var Class_2 = {}; 

Class_2.print = function(){ 
    console.log('hello world'); 
}; 

在这种情况下,我应该用一种方法对另一?

+1

他们是非常不同的:这是期望的结果? – 2012-07-13 23:41:54

+0

@pst ^同意.. – Jay 2012-07-13 23:42:27

+0

在这种情况下,我应该使用另一种方法? – gaggina 2012-07-13 23:47:02

回答

4

,如果你想创建一个类或单个对象它依赖的优势。

JavaScript OOP模型基于原型而不是类。这就是为什么您不仅可以将属性和方法添加到类(意味着该类的所有“实例”将具有该属性或方法),还可以将其添加到特定对象。 所以你可以有类C的对象A和B实例,并且你可以给A添加特殊的行为,只有A具有,而B没有它...... 所有这些听起来很奇怪,因为JavaScript实际上并没有类。它只有原型,通过使用原型可以做的事情,你可以或多或少地“模拟”课程。 在JavaScript中,当对象A是另一个对象B的“实例”时,实际上是说B是A的原型。这意味着您将根据它在B上的差异来定义A.

在现实世界中,这意味着你第一次遇到羊,是与多莉,一只白色的大毛羊。所以你说Dolly.color = white; Dolly.hair = a_lot; Dolly.size = big;然后有人问你羊是什么颜色的,因为你只知道多莉,你认为所有的绵羊都像多莉,你回答白色......然后你遇到另一只羊,皮特,但这是一个黑色和大, HARY。所以你说Pete和Dolly完全一样,只是Pete是黑色的......所以你会说Pete.Prototype = Dolly(这意味着它完全像Dolly),但是你会覆盖颜色和说它是不同的:Pete.color = black;

要在JavaScript中“模拟”类,你要做的是定义一个名为Sheep的“理想”羊,它具有所有羊的所有“默认”特性,并将其用作所有其他羊的原型。

define classes in JavaScript有很多方法。但是你应该永远记住,你实际上并不是在定义类,而是在原型和模拟类。如果你真的想了解正在发生的事情,以及如何充分利用它,你最好试试learning about prototypes

+0

谢谢,我会关注那些阅读:) – gaggina 2012-07-14 08:13:50

1

这取决于你的目的是什么。

第一个可以被实例化

var obj = new Class('...'); 

,第二个可以用来乘坐的命名空间

相关问题