Code 1:
var Something = {
name: "Name",
sayHi: function(){
alert(Something.name);
}
}
Code 2:
function Something(){
this.name = "Name";
}
Something.prototype.sayHi = function(){
alert(Something.name);
}
Edit:那么,伙计们,你的意思是第二个更好?或者更“正式”?
基本上在第一个例子中你声明了一个对象字面量这实际上已经是一个对象实例了。
在第二个示例中,您定义了一个构造函数,可以与new运算符来创建对象实例。
对象字面量还可以用于创建对象的新实例并进行原型继承,Douglas Crockford 也推广了这种技术。
基本上你可以有一个object
操作员:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
这个辅助函数可以以非常直观和方便的方式使用。
它基本上接收一个对象作为参数,在函数内部新对象实例创建后,旧对象是chained到新对象的原型并返回。
它可以这样使用:
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();
您可以根据需要进一步操作,从先前定义的对象创建新实例。
受到推崇的 :
- JavaScript 中的原型继承
- 高级 JavaScript(视频)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)