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

如果一个对象的属性值是一个函数,我们称这个属性叫做这个对象的方法(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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 595评论 0 2
  • 0 写在前面的话 大多数的面向对象编程语言中,比如C++和Java,在使用他们完成任务之前,必须创建类(class...
    自度君阅读 1,036评论 0 3
  • 写在之前 因为简书字数限制,完整版地址:https://www.zybuluo.com/hainingwyx/no...
    hainingwyx阅读 14,034评论 0 41
  • 三天的变形计课程结束,总结锻炼口才的方法 1、朗读朗诵 自己读书,大声地读出来。每天坚持朗读一些文章,既练习口齿清...
    鹿伟伦阅读 633评论 0 4