基本上在第一个例子中,你声明了一个object literal,它实际上已经是一个对象实例。
在第二个示例中,您可以定义一个构造函数,该函数可以与new
运算符一起使用来创建对象实例。
对象文字也可以用来创建对象的新实例并做原型继承,道格拉斯克罗克福德也提倡这种技术。
基本上你可以有一个object
操作:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
这个辅助功能可以在一个非常直观和方便的方式使用。
它主要接收对象作为参数,将创建一个新的对象实例功能里面,旧的对象是链新对象的原型,它的返回。
它可以像这样使用:
var oldObject = {
firstMethod: function() { alert('first'); },
secondMethod: function() { alert('second'); },
};
var newObject = object(oldObject);
newObject.thirdMethod = function() { alert('third'); };
var otherObject = object(newObject);
otherObject.firstMethod();
你可以走得更远,只要你想,从之前定义的对象作出新的实例。
推荐:
来源
2009-08-08 06:48:52
CMS
这对我来说也是一个很好的问题,感谢张贴。 – 2009-08-08 07:02:37
关于编辑中的问题,取决于你想要做什么。如果您只有对象的一个副本,请使用第一种语法。如果想要创建多个副本(比如'Something'是其他语言的'Class'),可以使用第二种语法(或者实际上是一个编辑过的版本,在其中使用'this.sayHi =函数(){...}',这是常态)。 – 2009-08-08 07:07:49