javascript - 如果 Javascript 的原生 OOP 是无类的,那么构造函数呢?这不是意味着一个类吗?

标签 javascript oop prototype

我认为Javascript原生OOP系统据说是无类的,是基于对象的,而不是基于类的。但是我看到的每个例子总是以类似于

的构造函数开始
function Person(name) {
    this.name = name;
}

仅仅通过这种方式使用构造函数,这是否已经暗示正在使用一个类? (一个叫做 Person 的类)


详细信息:

如果我们可以使用

a.__proto__ = b;

在任何 Javascript 平台上,那么我认为它是无类的。但我们不能那样做。如果我们想要这种行为,我们需要使用

function F() { }
F.prototype = b;
a = new F();

因此,必须使用构造函数。因此,如果构造函数是 Javascript 中的基石,则意味着它旨在成为 Person、Widget 等的构造函数,而这些都是类。

最佳答案

Javascript 中的 OOP 与 Java OOP 等略有不同。 Javascript 构造函数不引用类定义(因此它是无类的)。相反,构造函数指的是原型(prototype)。 Javascript 中 OOP 的基础是 Object 对象(不是 Object 类),所有其他对象都从中派生。

原型(prototype)设计赋予您继承权,以及使用属性和方法扩展现有对象的可能性。

我建议你this article .

在你的例子中:

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

Mike = new Person('Mike');

Person() 函数让您可以创建一个新对象,其原型(prototype)是 Object 对象,它具有一个名为 name 的新属性。那么,在 Javascript oop 中,这种函数称为构造函数。

关于javascript - 如果 Javascript 的原生 OOP 是无类的,那么构造函数呢?这不是意味着一个类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673927/

相关文章:

javascript - 对象数组上的长度属性未更新

java - 从java中的另一个类调用另一个函数

php - 为什么在这种情况下属性为空?

Javascript 原型(prototype)扩展奇怪的行为

javascript - 使用 id_token 作为重定向 URL 中的参数的重定向用户导致身份用户为 Null

javascript - Mongoose Push - 查找或更新对象数组

oop - 为什么类型推断对于面向对象的语言不切实际?

javascript - objective-c 对象可以用作 Javascript 对象的原型(prototype)吗?

javascript - 调用 Class.prototype = new MyClass() 是否确保每次都重新实例化父类(super class)?

javascript - 使用字符串键绑定(bind)嵌套对象