定义和中心思想
鸭式辨型来自于
"像鸭子一样走路并且嘎嘎叫的就叫鸭子。" -- James Whitecomb Riley
通过制定规则来判定对象是否实现这个接口。
尽量规避“对象的类是什么”的这些问题,而是关注“对象能做什么”。
JS对象的类获取实例
数据类型判断见一份炒饭-lodash 是如何做类型检测的
对象的类获取实例
function className(object, defaultName) {
var nameFromToStringRegex = /^function\s?([^\s(]*)/;
var result = "";
if(typeof object === 'null' )
return 'Null';
if(typeof object === 'undefined' )
return 'Undefined';
if (typeof object === 'function') {
result = object.name || object.toString().match(nameFromToStringRegex)[1];
} else if (typeof object.constructor === 'function') {
result = className(object.constructor, defaultName);
}
return result || defaultName;
}
参考:
掘金-一份炒饭-lodash 是如何做类型检测的
KeiferGu的博客-在Javascript中获取class的类型名的方法
Vinson-sheep-Javascript类型的判断