我正在尝试创建一个名为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;
}
}
答案 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());