嘿大家,这是来自John Resig Advanced JavaScript的#23,来自http://ejohn.org/apps/learn/#23,名为
What happens if a function is an object property.
1)关于词汇,变量武士刀是对象,对吧?如果匿名函数是它的属性,那么所谓的"使用"是什么?我认为"使用"也会被称为财产?或者"使用"也是一个对象,因为它包含一个值,即一个函数?
2).该函数的目的是更改为:Sharp:isSharp:false?什么!this.isSharp究竟做什么?
3)当它断言!katana.isSharp时,它实际上断言了什么?那个夏普现在被设定为"假"?
var katana = {
isSharp: true,
use: function(){
this.isSharp = !this.isSharp;
}
};
katana.use();
assert( !katana.isSharp, "Verify the value of isSharp has been changed." );
Run Code Online (Sandbox Code Playgroud)
Cam*_*ron 23
是的,katana是一个对象(使用{ ... }符号创建)."use"是对象属性的名称,其值为匿名函数(也是对象).
功能反转的值isSharp(以便从true到false或false到true).
它声称isSharp是一些东西,不计算为真(这几乎是除了一切undefined,null,false,0,等).在这种情况下,因为isSharp它总是true或者false,它声称它是false.
样本的主要观点(和冷却部分)是这一行:
katana.use();
Run Code Online (Sandbox Code Playgroud)
这首先从katana对象(即katana.use部分)获取"use"属性的值.该值是之前的匿名函数.然后,执行该功能(这是()部分).真正酷的部分是它代表katana对象执行- 这意味着this在匿名函数中,当katana对象被调用时,它是对对象的引用.