如何创建带有未分配属性的Javascript构造函数/原型

How to create Javascript constructor/prototype with unassigned properties?

本文关键字:属性 分配 Javascript 构造函数 原型 何创建 创建      更新时间:2023-09-26

我是从面向对象的世界来的,试图把我的头绕在Javascript中的"类"上。我想能够创建一个类的属性,但不必立即分配值给他们。如下所示:

var MyObject = function(id) {
    this.id = id;
    // Create the property so it is present on all instances but don't require it to be assigned to right away.
    this.friendId;
}
MyObject.prototype = {
    constructor: MyObject
    // Etc...
}

是否有办法做到这一点,或者我只是不知道它是如何在Javascript中工作的?

直接从声明中省略该属性:

function MyObject(id) 
{
    this.id = id;
}
var obj = new MyObject(123);
console.log(obj.friendId); // undefined

或者,在构造函数中显式地将其设置为null

这篇Mozilla Developer Network的文章很值得一读。它比较了基于类和基于原型的语言,并提供了Java和JavaScript的并行代码示例。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model

引自文章

构造函数或原型指定一个初始属性集。可以动态地为单个对象或整个对象集添加或删除属性。