看下面的代码:定义了一个对象直接量:
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。