悟透JavaScript之放下对象 -- 2

来源:互联网 发布:淘宝精细化运营 编辑:程序博客网 时间:2024/05/22 17:22

接  悟透JavaScript之放下对象 -- 1

 

WhoAmI.call(BillGates);//直接将BillGates作为this,调用WhoAmI。输出:I'm B

ill Gates of object

WhoAmI.call(SteveJobs);//直接将SteveJobs作为this,调用WhoAmI。输出:I'

m Steve Jobs of object

BillGates.WhoAmI.call(SteveJobs);//SteveJobs作为this,却调用BillGates

WhoAmI方法。输出:I'm Steve Jobs of object

SteveJobs.WhoAmI.call(BillGates);//BillGates作为this,却调用SteveJobs

WhoAmI方法。输出:I'm Bill Gates of object

WhoAmI.WhoAmI = WhoAmI;//WhoAmI函数设置为自身的方法。

WhoAmI.name = "WhoAmI";

WhoAmI.WhoAmI();//此时的thisWhoAmI函数自己。输出:I'm WhoA

mI of function

({name: "nobody", WhoAmI: WhoAmI}).WhoAmI();//临时创建一个匿名对象并

设置属性后调用WhoAmI方法。输出:I'm nobody of object

从上面的代码可以看出,同一个函数可以从不同的角度来调用,this并不一定是函数本身所属的对象。

this只是在任意对象和function元素结合时的一个概念,是种结合比起一般对象语言的默认结合更加灵

活,显得更加超然和洒脱。

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

当访问这个对象时,this不可省略!

JavaScript提供了传递this参数的多种形式和手段,其中,象BillGates.WhoAmI()SteveJobs.

WhoAmI()这种形式,是传递this参数最正规的形式,此时的this就是函数所属的对象本身。而大多数

情况下,我们也几乎很少去采用那些借花仙佛的调用形式。但只我们要明白JavaScript的这个自我与其

他编程语言的自我是不同的,这是一个放下了的自我,这就是JavaScript特有的世界观。

原创粉丝点击