heuristic manner

due to there is no strict type checking, all the algorithms related to type checking  are almost  all heuristic progress, 

“if there is a property of what, that could be xxx, or level down to other options”, you have to explore what it is through the way.

as this, in jquery.aop:

toStrings = {},
nodeTypes = { 1: 'element', 3: 'textnode', 9: 'document', 11: 'fragment' },
types = 'Arguments Array Boolean Date Document Element Error Fragment Function NodeList Null Number Object RegExp String TextNode Undefined Window'.split(' ');

//making a map of type
.....
return function(item) {
       return item == null && (item === undefined ? _undef : 'null') ||
	      item.nodeType && nodeTypes[item.nodeType] ||
	      typeof item.length == 'number' && (
	      item.callee && _arguments ||
	      item.alert && 'window' ||
	      item.item && 'nodelist') ||
	      toStrings[toString.call(item)];
};

- null or undefined;

- nodetype exist in object, it could be of types in nodeTypes, including the built-in ones, the BOM, DOM ones

-or when length property exist, it could be Arguments, NodeList, window

interestingly, in BOM, DOM field, the __proto__ chain searching property mechanism is NOT always work, e.g. length in window, but check it , u will find:

Object.prototype.hasOwnProperty.call(window, "length") //false in FF, true in chrome

Object.prototype.toString.call(window.__proto__, "length") //false
....
"length" in window //true
//at least it can show that the implementation is not integrity somehow

-use Object.prototype.toString method to output its type information and use map constructed to output its type.


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值