我一直在学习自学JavaScript一段时间,我刚刚开始重构我制作的帆布游戏,我想要检查一下我写作课的方式是否正确#39;我偶然发现了一种新的写作方式。
所以我的问题是以下哪一项是在JavaScript中创建对象的最佳方法,如果它们几乎相同,哪一个被更广泛接受,或何时适合使用每一个。
班级声明:
这是我不知道在JS中可用的那个。
class Person {
constructor(name) {
this.name = name;
}
}
let Me = new Person("John");
对象文字:
据我所知,这对一次性物品有好处。
let Me = {
type: "Person",
name: "John";
};
功能对象:
我不知道这是否是正确的名称,但我不知道还有什么可以称之为。
function Person(name) {
this.name = name;
this.sayName = function() {
return "Hi, my name is " + this.name;
};
}
let me = new Person("John");
原型:
据我所知,它们用于为预先存在的对象添加额外的功能(即对defualt JS数字对象起作用的值映射函数)
function Person(name) {
this.name = name;
}
Person.prototype.sayName = function() {
return "Hi, my name is " + this.name;
};
let me = new Person("John");
答案 0 :(得分:1)
您已经确定了对象文字的缺点:它只创建了一个对象。这通常是你想要的,但当你需要多个具有大量共享内容的对象时,你会想要使用函数。
class
语法基本上是构造函数+原型语法的语法糖。他们做同样的事情,差异在class
提供更简单的语法和一些保护措施,但具有较低的向后兼容性。
通常不应使用内部创建方法的构造函数,请参阅Use of 'prototype' vs. 'this' in JavaScript?了解差异。