从MS AJAX源代码,
Type.isClass = function Type$isClass(type) { ////// /// var e = Function._validateParams(arguments, [ {name: "type", mayBeNull: true} ]); if (e) throw e; if ((typeof(type) === 'undefined') || (type === null)) return false; return !!type.__class;
}
请看最后一行代码,为什么用!! 而不只是返回类型.__类?
谢谢!
作者一定不能认为type.__class
保证是一个布尔值.因为您可以将任何对象传递给Type.isClass()
:
Type.isClass(3); Type.isClass({}); Type.isClass(AnActualClassFunction);
...实际上并不能保证type.__class
会有一个布尔值.
当然,这不是ASP.NET AJAX"类"参数一般不会有一个__class
属性-因此,如果程序只是返回type.__class
,可能的返回值是true
,false
和undefined
.对于用于返回布尔值的例程,这是不合需要的.
!!type.__class
只保证返回一个布尔值(true
或false
)(undefined
将被转换为false
).