JavaScript渣渣到大神手册

JS面向对象--3对象的方法

2017-11-28  本文已影响0人  FF_C

如果一个对象的属性值是一个函数,我们称这个属性叫做这个对象的方法(methods).
下面这个对象有一个属性叫做sayHello,它的值是一个匿名函数,所以我们把这个sayHello叫做obj的方法

var obj = {
  name : "小明",
  age : 12,
  sex :"男",
  sayHello : function(){
    alert("你好")
  }
};
obj.sayHello();  //你好

我们用对象打点调用sayHello属性,这个函数的值 是个函数,所以就能圆括号执行:
obj.sayHello();

现在我们要研究的是函数的上下文(context).。所谓上下文就是指函数里的this是谁

var obj = {
  name : "小明",
  age : 12,
  sex :"男",
  sayHello : function(){
    alert("你好 我是"+this.name+"我的年龄是"+this.age)
  }
};
obj.sayHello(); //你好 我是小明 我的年龄是12

当一个函数当做对象的方法调用的时候 ,这个函数里的this表示这个对象
现在我们调用 函数的时候 是通过 obj打点调用 的,所以现在这个sayHello函数的上下文就是obj对象 。即sayHello函数的内部this指向obj,
但是,千万不要认为写在对象里面的函数,上下文一定是这个对象!
比如:

var obj = {
  xingming : "小明",
  age : 12,
  sex :"男",
  sayHello : function(){
    alert(this);   //object window
    alert("你好 我是"+this.name+"我的年龄是"+this.age)
  }
};

var fn = obj.sayHello;
fn(); //你好 我是 我的年龄是undefined (上面用了name,用其它名字会出undefined)

函数的上下文是什么 ,取决于函数怎么调用 ,而不是函数如何定义!!
函数的上下文是函数的调用时表现的性质,不是函数定义的时候写死的性质.

var obj = {
  xingming : "小明",
  age : 12,
  sex :"男",
  sayHello : function(){
    alert(this);   //object window
    alert("你好 我是"+this.name+"我的年龄是"+this.age)
  }
}
var xingming = "小强";
var age ="123"
var fn = obj.sayHello;
fn();  //你好 我是小强 我的年龄是123

全局变量就是window对象的属性

var a =100;
var b =222;
var c = 233;
var d = true;
var e =function(){alert(2+3)};

alert(window.a);
alert(window.b);
alert(window.e);
上一篇 下一篇

猜你喜欢

热点阅读