代码改变世界

javascript对象小问题

2012-09-20 15:42  youxin  阅读(262)  评论(0编辑  收藏  举报

看下面的代码:定义了一个对象直接量:

var person={
    name:"jack",
    setName:function(name){
        this.name=name; 
    },
    getName:function(){
        return name;
    }
};
document.write('<br/>'+person.getName());
person.setName('susan');
document.write('<br/>'+person.getName());

输出没有任何结果。

怎么改?

return name; 改为
return this.name;
就可以了
我们不经要问,对象直接量中的method的this指向谁?

JavaScript根本上都是关于的对象(Object)的。数组(Array)是对象,函数(Function)是对象,Object就不说了。那什么是对象?对象是名称-值的配对的集合。名称是字符串,值可以是字符串、数字、布尔值和对象(包括数组和函数)。对象常常实现为哈希表以快速存取值。

如果一个值是函数,我们可以将它视为方法method。当调用一个对象的方法时,this 变量就会被设为该对象。这个方法就可以通过this变量访问实例变量。

对象是由构造器constructor产生的,它是初始化对象的函数。构造器提供了其它语言中类提供的特性,包括静态方法和变量。。

从上面语句中可以看到:

person调用了方法,this指向的是person。