通过“new”关键字创建对象的Javascript特性

时间:2017-10-23 15:13:16

标签: javascript oop

我打赌这已经在其他地方得到了解释,但我不知道如何搜索它。我已经在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中的对象创建过程和差异以及最佳实践。

0 个答案:

没有答案