最近我一直在深入研究JavaScript,以充分了解这门语言,但我有一些令人困扰的问题似乎找不到答案(具体涉及面向对象编程)。
假设有以下代码:
function TestObject()
{
this.fA = function()
{
// do stuff
}
this.fB = testB;
function testB()
{
// do stuff
}
}
TestObject.prototype = {
fC : function
{
// do stuff
}
}
函数 fA
和 fB
有什么区别?它们在作用域和潜在能力方面是否完全相同?这只是惯例还是一种技术上更好或更合适的方式?
如果任何时候都只会有一个对象实例,那么像 fC
这样向原型中添加一个函数是否值得?这样做有什么好处?原型仅在处理多个对象实例或继承时才真正有用吗?
从技术上讲,将方法添加到原型的“正确”方式是像我上面所述的那样还是每次调用 TestObject.prototype.functionName = function(){}
?
我希望保持我的 JavaScript 代码尽可能清晰易读,但同时也非常关注语言中对象的正确约定。我来自 Java 和 PHP 背景,正在努力不做任何关于 JavaScript 工作方式的假设,因为我知道它是基于原型的,与我以前接触过的语言非常不同。