sách gpt4 ai đã đi

Sự vật

In lại 作者:行者123 更新时间:2023-11-29 18:42:15 28 4
mua khóa gpt4 Nike

function Person(fname, lname) {
this.fname = fname,
this.lname = lname,
this.getName = function(){
console.log(`${fname} ${lname}`)
}
}
var x1 = new Person(“amnah”, “khatun”)
var x2 = new Person(“xyz”, “pqr”)
console.log(x1.getName())

Đầu ra:

amnah khatun
không xác định

我只调用 x1.getName() 为什么两个都被调用并且 o/p 对于第二个未定义。如何解决这个问题。我尝试过使用 protype 属性,但都没有成功。

1 Câu trả lời

您实际上没有从函数返回任何内容 console.log(x1.getName()) 将记录从函数返回的值,该值是 không xác định.

您应该返回字符串而不是记录。

function Person(fname, lname) {
this.fname = fname,
this.lname = lname,
this.getName = function(){
return `${fname} ${lname}`
}
}
var x1 = new Person('amnah', 'khatun')
var x2 = new Person('xyz', 'pqr')
console.log(x1.getName())

另一点是,不记录属性的值是从闭包中转换值。 x1.getName 将始终返回相同的值,即使您更改了属性也是如此。

function Person(fname, lname) {
this.fname = fname,
this.lname = lname,
this.getName = function(){
return `${fname} ${lname}`
}
}
var x1 = new Person('amnah', 'khatun')
x1.fname = 'changed';

console.log(x1.getName())

要修复此问题,请在属性之前使用它。

 this.getName = function(){
return `${this.fname} ${this.lname}`
}

但是,向构造函数中添加方法并不好。在这里,Person 的每个实例都有自己的函数 getName。你应该使用prototype

function Person(fname, lname) {
this.fname = fname
this.lname = lname
}
Person.prototype.getName = function(){
return `${this.fname} ${this.lname}`;
}
var x1 = new Person('amnah', 'khatun')
var x2 = new Person('xyz', 'pqr')
console.log(x1.getName())

关于对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56184960/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com