gpt4 book ai didi

Javascript:对象和类

转载 作者:行者123 更新时间:2023-11-30 08:27:22 25 4
gpt4 key购买 nike

在早期的 js 中,我们可以这样做:

var emptyObj = {};

这创建了一个空对象,但这个对象是哪个类的实例,或者我缺少什么?类的概念已经在 es6 中引入,那么我们如何能够在 es5 和更早版本中定义对象而不存在类(因为对象只不过是类的实例)?请澄清!

最佳答案

...but this object is an instance of which class...?

对象,但请继续阅读...

The concept of classes has been introduced in es6...

不是真的。 ES2015(又名“ES6”)添加了 class 语法,但没有添加类的概念。 ES5 和 ES2015 都有类的概念(具有共性的对象组),并且都没有基于类的 OOP 语言(如 Java 或 C#)意义上的类。

JavaScript 具有原型(prototype)继承,并在其上覆盖了构造函数。当您将 new 与构造函数一起使用时,new 会创建一个对象,该对象使用函数的 prototype 属性引用的对象作为其原型(prototype)。

var emptyObj = {};

做同样的事情

var emptyObj = new Object();

假设 Object 有它的默认值。

ES2015 的 class 语法使得定义构造函数和分配给它们的 prototype 属性的对象变得更容易。这个 ES5 代码

function Foo(value) {
this.value = value;
}
Foo.prototype.squared = function() {
return this.value * this.value;
};

和这个 ES2015 代码:

class Foo {
constructor(value) {
this.value = value;
}
squared() {
return this.value * this.value;
}
}

两者都创建一个 Foo 构造函数和一个分配给 Foo.prototype 的对象,上面有 squared。有一些细微差别(主要是为了支持 super),但无论是在 ES5 还是 ES2015 中,它仍然是相同的原型(prototype)继承,构造函数覆盖在它上面。

关于Javascript:对象和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43450759/

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