gpt4 book ai didi

javascript - 正确的 JavaScript 对象

转载 作者:行者123 更新时间:2023-12-03 03:53:50 24 4
gpt4 key购买 nike

我自学 JavaScript 已经有一段时间了,我刚刚开始重构我制作的 Canvas 游戏,我想检查一下我编写类(class)的方式是否“正确”,我偶然发现了一种新的编写方式他们。

所以我的问题是以下哪一种是在 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");

原型(prototype):

据我所知,它们用于向预先存在的对象添加额外的功能(即,适用于默认 JS 数字对象的值映射函数)

function Person(name) {
this.name = name;
}

Person.prototype.sayName = function() {
return "Hi, my name is " + this.name;
};

let me = new Person("John");

最佳答案

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

class 语法本质上是构造函数+原型(prototype)语法的语法糖。它们做同样的事情,区别在于 class 提供更简单的语法和一些保护措施,但向后兼容性较低。

内部创建方法的构造函数一般不应该使用,参见Use of 'prototype' vs. 'this' in JavaScript?为了区别。

关于javascript - 正确的 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com