我打赌这已经在其他地方得到了解释,但我不知道如何搜索它。我已经在JS中阅读了很多关于OO的解释和方法,没有像TS或新ES6这样的东西,到处都有,使用了不同的语法,但从未将所有这些方法进行比较。
据我所知,有三种方法可以在JS中创建一个新对象,因为我们知道它在那里形成了不同的语言。 但实现此OO设计的不同之处和最佳做法是什么?
方法1:
var Foo1 = function() { this.a = 1 }
var testFoo1 = new Foo1();
console.log(testFoo1.a); //prints "1"
方法2:
function Foo2() { this.a = 2 }
var testFoo2 = new Foo2();
console.log(testFoo2.a); //prints "2"
到目前为止,代码几乎相同,除了声明对象函数的语法。但是现在已经很困惑了。这有什么区别?这真的只是偏好吗?
最后一种方法是原型链,在我看来需要更多代码或者至少不需要那些结构良好的代码,因为你不能在一个支架之间写它。
方法3:
Foo3 = function() { }
Foo3.prototype.a = 3;
testFoo3 = new Foo3();
console.log(testFoo3.a); //prints "3"
我希望我的问题和例子是正确的,这一切都是有道理的,并不是多余的。如果是这样,请给我留言,我将更正或删除此条目,但不要写下原因而不写下原因。非常感谢你。
编辑我想用这个问题指出普通JS中的对象创建过程和差异以及最佳实践。