构造函数的基本getName函数错误

时间:2017-03-09 19:56:16

标签: javascript

我正在尝试创建一个名为Cat的新构造函数,它接受一个猫的名字。我希望Cat有几种方法,包括getName和setName方法。

如果我执行 cat = new Cat('Catarina');

然后运行cat.getName();我期待“Catarina”被退回,但我得到undefined

JSBIN:http://jsbin.com/cuteye/edit?js,console

function Cat(name) {

    function getName() {
        return name;
      }

    function setName(name) {
      this.name = name;
     }

}

2 个答案:

答案 0 :(得分:0)

这应该按预期工作:

function Cat (name) {
    this.name = name;
}    
Cat.prototype.getName = function () {
    return this.name;
}
Cat.prototype.setName = function (name) {
    this.name = name;
}

有关课程创建的更多信息:https://www.phpied.com/3-ways-to-define-a-javascript-class/

答案 1 :(得分:-1)

您正在创建一个Closure。您需要返回方法或保持私密。

function Cat(name) {

        this.name = name;

        function getName() {
            return name;
          }

        function setName(name) {
          this.name = name;
         }

         return {
            getName : getName,
            setName : setName
         }        
}

cat = new Cat('Catarina');
console.log(cat.getName());