当你使用'instanceof'时,'Buffer.isBuffer'有什么用?

我不明白什么是instanceof作为一个魅力时, Buffer.isBuffer函数的目的:

 var b = new Buffer('blabla') assert.ok(b instanceof Buffer) 

那么,实际上这些是相同的(至less现在):

– lib / buffer.js

 Buffer.isBuffer = function isBuffer(b) { return util.isBuffer(b); }; 

– lib / util.js

 function isBuffer(arg) { return arg instanceof Buffer; } exports.isBuffer = isBuffer; 

…所以唯一可能的原因是可读性。 请注意,在这个特定的实现之前,有一组用于types检查的macros ,在构build源文件时使用。 但是这个提交已经改变了,这就是推理:

向Node的JS层添加macros增加了贡献的障碍,并且破坏了为用户级模块导出Node的js文件的程序。 (例如,几个browserify转换,我的可读streampolyfill,util-debuglog模块等)。这些都不是小问题。

我build议检查提交的拉取请求中的整个讨论。