悟透JavaScript之放下对象 -- 2

接  悟透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(); //此时的this WhoAmI 函数自己。输出: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 特有的世界观。

你可能感兴趣的:(JavaScript,编程,function,object,语言,jobs)