适当的JavaScript对象

时间:2017-07-12 03:23:46

标签: javascript javascript-objects function-prototypes

我一直在学习自学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");

1 个答案:

答案 0 :(得分:1)

您已经确定了对象文字的缺点:它只创建了一个对象。这通常是你想要的,但当你需要多个具有大量共享内容的对象时,你会想要使用函数。

class语法基本上是构造函数+原型语法的语法糖。他们做同样的事情,差异在class提供更简单的语法和一些保护措施,但具有较低的向后兼容性。

通常不应使用内部创建方法的构造函数,请参阅Use of 'prototype' vs. 'this' in JavaScript?了解差异。