如何在对象中调用方法
How to call a method within an object
我正在尝试在一个对象中创建一个 属性,我希望该值是从同一函数中的方法返回的任何值:
var model = {
generateRandomNumber: function(){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
},
generatedNumber: this.generateRandomNumber()
};
但是我得到一个错误:Uncaught TypeError: undefined is not a function
我只想让新的 属性 包含从同一对象中的方法返回的任何内容。
在对象存在之前,您不能访问对象(调用函数)。
您必须分两步完成:
var model = {
generateRandomNumber: function(){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
}
};
model.generatedNumber = model.generateRandomNumber()
由于该方法不依赖于 this
(这回避了为什么它首先是一个对象方法的问题),您可以单独定义该函数。
function generateRandomNumber (){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
}
var model = {
generateRandomNumber: generateRandomNumber,
generatedNumber: generateRandomNumber()
};
在对象声明中无法访问函数 generateRandomNumber,因为对象文字尚未完全解析。试试这个:
var obj = {
generateRandomNumber: function() {
return this.generatedRandomNumber = Math.floor(Math.random() * 101);
}
}
obj.generateRandomNumber();
alert(obj.generatedNumber);
您的问题在于您的引用,在对象内部使用 this.generateRandomNumber.. 这是行不通的。为什么不这样做:
var model = {
generateRandomNumber: function() {return Math.floor(Math.random()*101;}, generatedNumber: Math.floor(Math.random()*101};
这会产生同样的效果。
我正在尝试在一个对象中创建一个 属性,我希望该值是从同一函数中的方法返回的任何值:
var model = {
generateRandomNumber: function(){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
},
generatedNumber: this.generateRandomNumber()
};
但是我得到一个错误:Uncaught TypeError: undefined is not a function
我只想让新的 属性 包含从同一对象中的方法返回的任何内容。
在对象存在之前,您不能访问对象(调用函数)。
您必须分两步完成:
var model = {
generateRandomNumber: function(){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
}
};
model.generatedNumber = model.generateRandomNumber()
由于该方法不依赖于 this
(这回避了为什么它首先是一个对象方法的问题),您可以单独定义该函数。
function generateRandomNumber (){
var randomNumber = Math.floor(Math.random() * 101);
return randomNumber;
}
var model = {
generateRandomNumber: generateRandomNumber,
generatedNumber: generateRandomNumber()
};
在对象声明中无法访问函数 generateRandomNumber,因为对象文字尚未完全解析。试试这个:
var obj = {
generateRandomNumber: function() {
return this.generatedRandomNumber = Math.floor(Math.random() * 101);
}
}
obj.generateRandomNumber();
alert(obj.generatedNumber);
您的问题在于您的引用,在对象内部使用 this.generateRandomNumber.. 这是行不通的。为什么不这样做:
var model = {
generateRandomNumber: function() {return Math.floor(Math.random()*101;}, generatedNumber: Math.floor(Math.random()*101};
这会产生同样的效果。