我有一个对象,我想循环遍历它并打印出其属性的所有值。我的问题是,当我尝试打印出其中一个方法返回的值时,我得到方法的代码而不是方法应该返回的值。我确定我正在制作访问语法拼写错误,但我无法理解。
function Dog (breed,sound) {
this.breed = breed;
this.sound = sound;
this.bark = function(){
alert(this.sound);
return this.sound;
};
}
var x = new Dog("Retriever",'woof');
x.bark(); // Test: 'woof'
for (var y in x) {
document.getElementById("results").innerHTML +="<br/>"+x[y];
}
/* x[y] when y is 'bark' returns the method's code,
but I'm looking for the value. */
JSFiddle:http://jsfiddle.net/nysteve/QHumL/4/
答案 0 :(得分:1)
这样的事情对你有用吗?这里的想法也是让这种“树皮”属性更通用,所以你可以将它用于其他动物。
function Dog (breed,sound) {
this.breed = breed;
this.sound = sound;
this.noise = alertNoise(this);
}
function alertNoise(animal) {
alert(animal.sound);
return animal.sound;
}
var x = new Dog("Retriever",'woof');
//x.bark(); // 'woof'
for (var y in x) {
document.getElementById("results").innerHTML +="<br/>"+x[y];
}
// x[y] when y is 'bark' returns the property-function's code, but I'm looking for the value.