मैं अपने आप को हैश प्रदान करने के लिए स्ट्रिंग का विस्तार करने की कोशिश कर रहा हूं। मैं Node.js क्रिप्टो लाइब्रेरी का उपयोग कर रहा हूँ।स्ट्रिंग.प्रोटोटाइप के अंदर 'यह' एक ऑब्जेक्ट प्रकार का संदर्भ क्यों देता है, स्ट्रिंग प्रकार नहीं?
मैं इस तरह स्ट्रिंग का विस्तार:
String.prototype.hashCode = function() {
return getHash(this);
};
और मैं एक getHash
समारोह है कि इस तरह दिखता है:
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 = "Hello world";
console.log(getHash(s));
में कहा जाता है, के रूप में
लेकिन जब मैं कोशिश करता हूं:
var s = "ABCDE";
console.log(s.hashCode());
विधि कॉल विफल रहता है। ऐसा लगता है कि String.prototype.hashCode
में किसी ऑब्जेक्ट के रूप में पहचाना जाता है जब crypto.hash.update
कहा जाता है, लेकिन एक स्ट्रिंग की अपेक्षा की जाती है। मैंने सोचा कि this
String.prototype
के अंदर स्ट्रिंग स्वयं होगा, लेकिन किसी कारण से यह getHash()
पर ऑब्जेक्ट की तरह दिखता है। मेरे द्वारा यह कैसे किया जा सकता है?
मैं बस 'सख्त उपयोग' के साथ जाऊंगा, लेकिन फिर भी यह बताने के लिए एक टिप्पणी छोड़ दें कि इसकी आवश्यकता क्यों है। यह संभावना है कि अधिकांश रखरखाव कारण नहीं जान पाएंगे। – Marcelo