在JavaScript中访问对象方法返回的值

时间:2013-10-03 18:05:51

标签: javascript object methods properties

我有一个对象,我想循环遍历它并打印出其属性的所有值。我的问题是,当我尝试打印出其中一个方法返回的值时,我得到方法的代码而不是方法应该返回的值。我确定我正在制作访问语法拼写错误,但我无法理解。

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/

1 个答案:

答案 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.