我正在尝试创建一个Person类。该人的年龄将是一个随机数,由if / else语句确定。现在它似乎只有在我将函数放在对象之外或作为单独的键时才起作用。
function age(x) {
if (x.toLowerCase().charCodeAt(0) <= "g".charCodeAt(0)) {
return Math.floor(Math.random()*40+1);
}
else {
return Math.floor(Math.random()*40+41);
}
}
function person(name) {
this.name = name;
this.age = age(name);
}
var people = {
joe: new person("Joe")
};
console.log(people.joe.age);
\\ returns a number 41-80
我有没有办法将函数直接放入“this.age”键并发生相同的事情,如下所示:
function person(name) {
this.name = name;
this.age = function age() {
if (this.name.toLowerCase().charCodeAt(0) <= "g".charCodeAt(0)) {
return Math.floor(Math.random()*40+1);
}
else {
return Math.floor(Math.random()*40+41);
}
};
答案 0 :(得分:5)
您可以立即执行该功能:
function person(name) {
this.name = name;
this.age = (function age() {
if (this.name.toLowerCase().charCodeAt(0) <= "g".charCodeAt(0)) {
return Math.floor(Math.random()*40+1);
}
else {
return Math.floor(Math.random()*40+41);
}
})();
};
答案 1 :(得分:4)
function person(name) {
this.name = name;
this.age = (function age() {
var x = this.name.toLowerCase().charCodeAt(0) <= "g".charCodeAt(0))?1:41;
return Math.floor(Math.random()*40+x);
})();
};
执行(function(){})()
你正在执行它。
(function(){}) //this converts the function into a statement
() // this executes
答案 2 :(得分:2)
你必须定义闭包(函数)并直接执行它。
function person(name) {
this.name = name;
this.age = (function age() {
var x = this.name.toLowerCase().charCodeAt(0) <= "g".charCodeAt(0)) ? 1 : 41;
return Math.floor(Math.random()*40+x);
})();
};