gpt4 book ai didi

javascript - Javascript OOP 中的未知未定义

转载 作者:行者123 更新时间:2023-12-01 02:51:42 26 4
gpt4 key购买 nike

我仍在学习 JavaScript 中的 OOP。在浏览一些教程时我遇到了这段代码

function Employee () {}

Employee.prototype.firstName = "Abhijit";
Employee.prototype.lastName = "Patel";
Employee.prototype.startDate = new Date();
Employee.prototype.signedNDA = true;
Employee.prototype.fullName = function () {
console.log(this.firstName + " " + this.lastName);
};

var abhijit = new Employee () //
console.log(abhijit.fullName()); // Abhijit Patel & undefined
console.log(abhijit.signedNDA);// true

我想问的是,为什么abhijit.fullName()显示未定义?

我不是在问如何解决这个问题,我只是想知道为什么?谢谢。

最佳答案

console.log(abhijit.fullName()) 的执行分为以下几部分:

1) 执行 console.log(abhijit.firstName + ""+ abhijit.lastName),来自内部 abhijit.fullName() 调用,打印一个字符串,并且不返回任何内容(例如 undefined);

2) 执行外部 console.log(undefined),其中 undefined 是 (1) 的结果。

<小时/>

为了避免这种行为,您需要稍微更改一下代码:

Employee.prototype.fullName = function () {
return this.firstName + " " + this.lastName;
};
console.log(abhijit.fullName());

Employee.prototype.printFullName = function () {
console.log(this.firstName + " " + this.lastName);
};
abhijit.printFullName();
<小时/>

此外,我建议不要将特定数据保留在原型(prototype)上,而是保留在实例上:

function Employee(first, last) {
this.firstName = first;
this.lastName = last;
}

Employee.prototype.fullName = function () {
return this.firstName + " " + this.lastName;
};

var abhijit = new Employee('Abhijit', 'Patel');
console.log(abhijit.fullName());

关于javascript - Javascript OOP 中的未知未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46923028/

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