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