gpt4 book ai didi

javascript - 创建对象的两种方法,不确定有什么区别或使用哪一种

转载 作者:行者123 更新时间:2023-12-03 00:44:34 25 4
gpt4 key购买 nike

通常,我创建一个类,然后实例化该类的对象,但是,当我观看教程时,我看到有人仅通过使用函数来创建对象,甚至没有类。

在下面的代码中,我使用了两种方法,只是为了检查当我控制台记录包含对象的数组时会有什么区别。我用我的类生成的对象填充第一个数组,用函数生成的对象填充第二个数组。

在我 console.log() 两个数组之后,它们似乎是相同的。那么,如果我可以在没有类的情况下创建对象,那么创建类还有什么意义呢?

var w = 40;
var cols, rows;
var grid = [];
var grid1 = [];

class Cell {
constructor(i, j) {
this.i = i,
this.j = j
}
}

function Cell2(i, j) {
this.i = i;
this.j = j;
}

function setup() {
createCanvas(400, 400);
cols = floor(width/w);
rows = floor(height/w);

for (var i = 0; i < cols; i++) {
for (var j = 0; j < rows; j++) {
var cell = new Cell(i,j);
grid.push(cell);
}
}

for (var i = 0; i < cols; i++) {
for (var j = 0; j < rows; j++) {
var cell1 = new Cell2(i,j);
grid1.push(cell1);
}
}
}

最佳答案

class 语法只是语法糖。 JavaScript 并不真正具有类继承,它具有带有构造函数的原型(prototype)继承。但这让很多人感到困惑,尤其是那些来自基于类的语言的人,因此添加了 class 关键字以使其更熟悉。事实上我真的很喜欢它:

  // new ES 6 syntax
class Child extends Parent {
constructor() {
super();
}

method() {
super.method();
}

static staticMethod() { }
}

// equals the old one:
function Child() {
Parent.call(this);
// constructor...
}

Child.staticMethod = function() { /*...*/ };

Child.prototype.method = function() {
Parent.prototype.method.call(this);
};

关于javascript - 创建对象的两种方法,不确定有什么区别或使用哪一种,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303978/

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