16
我不明白什麼是Buffer.isBuffer
功能的目的時instanceof
的作品就像一個魅力:當你使用'instanceof'時,'Buffer.isBuffer'有什麼用?
var b = new Buffer('blabla')
assert.ok(b instanceof Buffer)
我不明白什麼是Buffer.isBuffer
功能的目的時instanceof
的作品就像一個魅力:當你使用'instanceof'時,'Buffer.isBuffer'有什麼用?
var b = new Buffer('blabla')
assert.ok(b instanceof Buffer)
嗯,其實這些都是一樣的(目前至少):
Buffer.isBuffer = function isBuffer(b) {
return util.isBuffer(b);
};
function isBuffer(arg) {
return arg instanceof Buffer;
}
exports.isBuffer = isBuffer;
...所以唯一可能的原因是可讀性。請注意,在此特定實施之前,在構建源時使用了類型檢查set of macros。但它已經改變了與this commit,而那是一個道理:
添加宏節點的JS層增加了障礙 貢獻,並打破了出口節點的JS文件 用戶態模塊的程序。 (例如,幾個browserify轉換,我的 可讀流填充,util-debuglog模塊等)。這些都是不小的問題。
我建議檢查提交的pull request的整個討論。
'instanceof'常常被忽視。閱讀[this](http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/)。我不確定它在節點的情況下不會過度保護。 –
'Buffer.isBuffer()'似乎已經[由Ryan Dahl介紹](https://github.com/joyent/node/commit/02729d4af7b17ea4c7272a0d0d99f6f7418e3237)。提交併沒有解釋爲什麼,但它可能只是一個重構問題,並且有一個確定什麼是「*緩衝區*」的通用定義。這樣可以更容易維護,並且可能在需要時進行更改。雖然,是的,它現在只是'實例緩衝區'。 –
'isBuffer'目前已被棄用。 – hellboy