我恰好注意到,当将变量指定为a时Object,变量的类型是"函数",而如果我使用对象文字符号将其指定为空对象{}或实例化为a new Object,则typeof变量是对象.这有什么区别?
请注意,我不是要问对象文字表示法和构造函数表示法之间的区别.
我一直在和一些在公司里使用JavaScript的专业人士交谈,而且我被告知,new使用全局对象创建一个对象实例并不是一个好习惯{},即使我想要一个空对象,像这样:
var wrong1 = new Object();
var wrong2 = {};
Run Code Online (Sandbox Code Playgroud)
但根据它们和公司的标准,最正确的方法是创建它:
var correct = Object.create({});
Run Code Online (Sandbox Code Playgroud)
将一个空对象传递给一个空对象的原型似乎过度设计,甚至可能没用.
有人可以给我一个答案,为什么这是推荐的,或者如果不是,为什么不呢?(可能的优点和缺点.)
我正在通过Codeacademy工作,他们表明你必须写两个.但他们没有解释为什么你需要两者.
在JavaScript中,可以通过使用Object的合并构造函数来创建对象:
var person = new Object();
person.firstName = 'John';
person.lastName = 'Doe';
Run Code Online (Sandbox Code Playgroud)
几乎所有人似乎更喜欢将对象创建的方式视为文字:
var person2 = {
firstName: 'Peter',
lastName: 'Smith'
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道:为什么构造函数方式被完全忽略了?
但尤其是:是否有人应该偏好另一种方式呢?
我的意思是构造函数必须出于某种原因...
这两种创建/初始化新对象的方式有什么区别吗?或者他们是一样的?一种方法比另一种更好吗?
class Person {
FirstName: string = "";
LastName: string = "";
constructor(FN: string, LN: string) {
this.FirstName = FN;
this.LastName = LN;
}
}
var P:Person;
var P = new Person("John", "Smith"); // METHOD #1
var P = {FirstName:"John", LastName:"Smith"}; // METHOD #2
Run Code Online (Sandbox Code Playgroud)