我刚刚拿起一本关于 ASP.NET 和 AJAX 的新书,里面有一个这样的示例:
Person = function(firstName) {
this._firstName = firstName;
}
Person.prototype = {
get_FirstName = function() {return this._firstName;}
}
我立即注意到这不是我所习惯的,FireBug 显然同意我的观点,认为它很不稳定。我习惯了这样的事情:
Person.protoype = {
get_FirstName: function() {return this._firstName;}
}
这只是作者的拼写错误还是他可能使用了 ASP.NET AJAX 库中的功能?
另外,前面的函数和这个有什么区别:
Person.protoype.get_FirstName = function() {
return this._firstName;
}
作者是否只是将同一函数的两个可接受的声明混在一起?
最佳答案
第一个问题,是的,我认为这是一个错字。
第二个问题,是的,有区别。不明智的人:
Constructor.prototype = { method : function(){} }
继承自定义该方法的匿名对象({}
)。
如果第二次执行此操作,则先前的方法将消失,因为继承链现在将指向一个新的匿名对象。
更常见的:
Constructor.prototype.method = function(){}
简单地定义一个新方法。
关于Javascript 原型(prototype)(类似于 Closures 的原型(prototype),而不是 JQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2025244/