私はそれ自身のハッシュを提供するために文字列を拡張しようとしています。私はNode.js暗号ライブラリを使用しています。String.prototype内の 'this'はオブジェクト型であり、文字列型ではないのはなぜですか?
String.prototype.hashCode = function() {
return getHash(this);
};
と私はこのようになりますgetHash
機能を持っています:
私はこのような文字列を拡張
var s = "Hello world";
console.log(getHash(s));
にように、直接呼び出されたときに機能が正常に動作します
function getHash(testString) {
console.log("type is" + typeof(testString));
var crypto = require('crypto');
var hash = crypto.createHash("sha256");
hash.update(testString);
var result = hash.digest('hex');
return result;
}
でも試してみる:
var s = "ABCDE";
console.log(s.hashCode());
メソッド呼び出しが失敗します。 crypto.hash.update
が呼び出されたときにString.prototype.hashCode
のthis
がオブジェクトとして識別されているように見えますが、文字列が必要です。私はthis
の中にString.prototype
があると思っていましたが、なんらかの理由でgetHash()
のオブジェクトのように見えます。どうすれば修正できますか?厳しいとゆるい両方 - - 行くことがあれば特にtypeof
と平等など、すべての原始的な文字列(のように動作しませんString
wrapper type、なるよう
「use strict」と表示されますが、なぜそれが必要なのかを説明するコメントが残っています。ほとんどの保守担当者はその理由を知りません。 – Marcelo