Javascript:对象和类

标签 javascript class object ecmascript-6

在早期的 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/

相关文章:

使用类对复选框组进行 jQuery 验证

c++ - 如何使用指针用对象填充 vector

javascript - EmberJs 中的 Hello World 错误

javascript - jQuery: Firefox focusout 事件

c++ - 头文件中的 "class example;"是什么意思?

c - 从 C 代码使用 D 类

python - 从对象数组打印对象属性数组

.net 将 xml 反序列化为多个已知对象之一

javascript - 使用 Google Chrome 扩展程序编辑页面源代码

javascript - 显示下拉列表中的元素 - JavaScript/HTML