日期:2014-05-16  浏览次数:20438 次

关于对象的属性和方法疑惑
今天,试着定义了一个对象,简单的包括一个属性和方法,如下:
JScript code

        var obj = {
        name : "obj",
        printInfo : function(){
            alert("my name is obj");
        }
    }
    alert(obj.name);
    alert(obj.printInfo());


本以为输出的是:
obj和my name is obj,
结果输出的是
obj和my name is obj还有一个undefined,
请问这是什么原因呢?希望知道的大侠帮忙解下疑惑,先谢谢啦!

------解决方案--------------------
printInfo : function(){
alert("my name is obj");
}
返回了一个undefined,alert是alertprintfinfo的返回值
------解决方案--------------------
obj.printInfo这个方法你没有定义它的返回值,所以它返回undefined,所以alert(obj.printInfo())就会弹出undefined。如果想要得到你想要的结果,可以做如下修改。
方法1:
JScript code

var obj = {
        name : "obj",
        printInfo : function(){
            alert("my name is obj");
        }
    }
    alert(obj.name);
    obj.printInfo();

------解决方案--------------------
第一个输出obj,是因为alert(obj.name);中obj.name的值被输出了
第二个输出my name is obj,是因为obj.printInfo()被执行了
第三个输出undefined,是因为alert(obj.printInfo());中,obj.printinfo()函数并没有返回值。如下你可以得到输出:我是printinfo函数的返回值
JScript code
printInfo : function(){
  alert("my name is obj");
  return "我是printinfo函数的返回值";
}