JavaScript 对象和方法,但 getName 不是函数

标签 javascript oop object member-functions

我正在学习 JavaScript 并编写了一个简单的演示,但失败了。你能帮我解释一下为什么 getName 不是一个函数吗?谢谢。

var newPerson = function(name) {
  this.name = name;
  getName: return function() {
    return this.name;
  }  
};  
			
var personOne = newPerson("Diego");  
var personTwo = newPerson("Gangelo");  
console.log(personOne.getName()); // prints Diego  
console.log(personTwo.getName()); // prints Gangelo

最佳答案

看起来您正在尝试使用一些公开的方法返回一个对象。在那种情况下,这就是我会做的。

var newPerson = function (name) {
    this.name = name;
    var self = this; 

    return {
        getName: function () {
            return self.name
        }
    }
}

var personOne = new newPerson("Diego");  
var personTwo = new newPerson("Gangelo");  
console.log(personOne.getName()); // prints Diego  
console.log(personTwo.getName()); // prints Gangelo

编辑:感谢 Pootie

或者你也可以这样做。

    var newPerson = function (name) {
        this.name = name;
        
        this.getName = function () {
            return this.name;
        }
    }

    var personOne = new newPerson("Diego");  
    var personTwo = new newPerson("Gangelo");  
    console.log(personOne.getName()); // prints Diego  
    console.log(personTwo.getName()); // prints Gangelo

下次,使用 console.log() 而不是 document.write(),因为这样更容易调试。

关于JavaScript 对象和方法,但 getName 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739958/

相关文章:

javascript - 如何用 jQuery 复选框替换数组中的值

javascript - jQuery:如果距顶部超过 150px 则执行

java - 从 Stream 调用的 close() 方法如何指向 AbstractPipeline 抽象类中 close() 方法的实现?

javascript:将 key 从 for 循环传递到另一个函数失败

Javascript::JSON 解析不接受换行符?

javascript - 如何使用 jquery 查找列表项出现在哪个数字父项中?

javascript - Python 和 JS [object HTMLSelectElement] 和 [object HTMLInputElement] 声明问题

c++ - 使用函数继承类,具有静态成员

c# - 当其中一个实现需要更多数据时该怎么办

C++ - 指向对象的指针 vector 的性能与对象的性能