大家好,这是来自John Resig Advanced JavaScript http://ejohn.org/apps/learn/#23的#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." );
答案 0 :(得分:23)
是的,katana
是一个对象(使用{ ... }
表示法创建)。 “use”是对象属性的名称,其值将是匿名函数(也是对象)。
该函数会反转isSharp
的值(从true
到false
或false
到true
)。
声称isSharp
是不评估为真的内容(除了undefined
,null
,false
,{{1等等)。在这种情况下,由于0
始终是isSharp
或true
,因此它声称它是false
。
样本的要点(和冷却部分)是这一行:
false
首先从katana.use();
对象(即katana
部分)获取“use”属性的值。该值是之前的匿名函数。然后,执行该函数(即katana.use
部分)。非常酷的部分是它代表()
对象执行 - 这意味着匿名函数中的katana
是对this
对象的引用当它被这样称呼时。
答案 1 :(得分:1)
1)Katana
是一个对象。 Katana.use
是一个功能。它是一个包含函数值的属性。它包含的值恰好是一个匿名函数。
区别在于Katana.use
是Katana
的属性,Katana.use
的值是函数。 use
是Katana
上定义的密钥,因为Katana["use"]
也有效。
2)设置isSharp为NOT isSharp所以要么为true - >假或假 - >真
3)断言正在说katana.isSharp === false
它应该是,因为它是原始的,但后来设置为假。
答案 2 :(得分:1)
use
是对象katana
的属性。