【发布时间】:2026-02-18 07:00:01
【问题描述】:
我试图了解 JavaScript 的 OOP 模型,所以我正在阅读这篇文章: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
下面的代码很有趣:
function Person(gender) {
this.gender = gender;
alert('Person instantiated');
}
Person.prototype.gender = '';
var person1 = new Person('Male');
var person2 = new Person('Female');
//display the person1 gender
alert('person1 is a ' + person1.gender); // person1 is a Male
对我来说有趣但不清楚的是这一行:
Person.prototype.gender = '';
我不明白,所以我用那行和没有它的代码测试了代码。
代码在这两种情况下都可以正常工作。
所以我的问题是:
作者为什么要加那行?
【问题讨论】:
-
在这种情况下是不必要的。但是想象一下,如果
this.gender = gender;被省略(或者可能包含在条件中)会发生什么,你知道吗? -
@Bergi 你的意思是避免调用 null 或 undefined?
-
@stackunderflow Bergi 指的是它充当默认参数值的情况。但是,我认为最好避免它,因为它缓慢、不清楚,并且如果发生突变会产生意想不到的结果。
标签: javascript oop prototype