《悟透javascript》学习笔记:六、放下对象

引言

 

再来看看functionobject的超然结合吧。

 

    在面向对象的编程世界里,数据与代码的有机结合就构成了对象的概念。自从有了对象,编程世界就被划分成两部分,一个是对象内的世界,一个是对象外的世界。对象天生具有自私的一面,外面的世界未经允许是不可访问对象内部的。对象也有大方的一面,它对外提供属性和方法,也为他人服务。不过,在这里我们要谈到一个有趣的问题,就是“对象的自我意识”。

 

理解this

 

    JavaScript中也有this,但这个this却与C++C#Java等语言的this不同。一般编程语言的this 就是对象自己,而 JavaScript this 却并不一定!this 可能是我,也可能是你,可能是他,反正是我中有你,你中有我,这就不能用原来的那个“自我”来理解 JavaScript这个this的含义了。为此,我们必须首先放下原来对象的那个“自我”。

 

<script language="javascript">

function WhoAmI(){

    //此时是 this 当前这段代码的全局对象,在浏览器中就是window 对象,其name属性为空字符串。输出:I'm of object

   alert("i'm " + this.name + " of " + typeof(this));

   alert("url is " + this.location);    //证明此时的thiswindow对象

}

WhoAmI();    //执行

 

var Bill = {name:"BillGates"}; //创建一个对象

Bill.WhoAmI = WhoAmI;  //Bill增加一个WhoAmI的方法,并赋为上面的方法

Bill.WhoAmI();     //执行, 此时thisBill

 

WhoAmI.call(Bill); //执行, 此时thisBill

 

({name:"noName", WhoAmI:WhoAmI}).WhoAmI();

</script>

 

    JavaScript函数中,你只能把this看成当前要服务的“这个”对象。this是一个特殊的内置参数,根据this参数,您可以访问到“这个”对象的属性和方法,但却不能给this参数赋值。在一般对象语言中,方法体代码中的this可以省略的,成员默认都首先是“自己”的。但JavaScript却不同,由于不存在“自我”,当访问“这个”对象时,this不可省略!(这段话很抽象)

 

     上面演示了多种this的传递方法,JavaScript提供了传递this参数的多种形式和手段,其中,象BillGates.WhoAmI()SteveJobs.WhoAmI()这种形式,是传递 this 参数最正规的形式,此时的 this 就是函数所属的对象本身。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值