代码1:
那么,伙计,你的意思是第二个更好?或更“正式”?
var Something = { name: "Name",sayHi: function(){ alert(Something.name); } }@H_502_4@代码2:
function Something(){ this.name = "Name"; } Something.prototype.sayHi = function(){ alert(Something.name); }@H_502_4@编辑:
那么,伙计,你的意思是第二个更好?或更“正式”?
解决方法
基本上在第一个例子中,你声明一个实际上已经是一个对象实例的
object literal.
@H_502_4@在第二个例子中,您定义了一个可以与
> Advanced JavaScript (Video)
new
运算符一起使用的构造函数来创建对象实例.
@H_502_4@对象文字也可用于创建对象的新实例,并进行原型继承,Douglas Crockford也提出了这种技术.
@H_502_4@基本上你可以有一个对象运算符:
function object(o) { function F() {} F.prototype = o; return new F(); }@H_502_4@这个帮助功能可以以非常直观和方便的方式使用. @H_502_4@它基本上接收一个对象作为参数,在函数内部创建一个新的对象实例,旧对象被链接到新对象的原型,并返回. @H_502_4@它可以像这样使用:
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();@H_502_4@您可以根据需要进一步扩展,从以前定义的对象创建新实例. @H_502_4@推荐的 : @H_502_4@> Prototypal Inheritance in JavaScript
> Advanced JavaScript (Video)