एमडीसी में बहुत सारे कोड स्निपेट हैं जो ब्राउज़र में नए ईसीएमएस्क्रिप्ट मानकों के समर्थन को लागू करने के लिए हैं जो उनका समर्थन नहीं करते हैं, जैसे Array.prototype.map
फ़ंक्शन:एमडीसी प्रोटोटाइप फ़ंक्शंस इस तरह से क्यों लिखे गए हैं?
if (!Array.prototype.map)
{
Array.prototype.map = function(fun /*, thisp */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();
var res = new Array(len);
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in t)
res[i] = fun.call(thisp, t[i], i, t);
}
return res;
};
}
उपयोग करने का लाभ क्या है (यदि कोई है) यह कार्य
function(fun, thisp)
{
// same code, just without the "var thisp = arguments[1];" line:
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();
var res = new Array(len);
for (var i = 0; i < len; i++)
{
if (i in t)
res[i] = fun.call(thisp, t[i], i, t);
}
return res;
}
, var t = Object(this);
के बजाय var t = this;
और var len = t.length >>> 0;
var len = t.length;
की बजाय var len = t.length >>> 0;
के बजाय है?
धन्यवाद! (लेकिन क्या आप उस 'फ़ंक्शन (मजेदार, इस) के कर्मचारियों के बारे में जानते हैं?) –
हाँ, मुझे अभी एहसास हुआ कि मुझे याद आया, क्षणिक रूप से आने का संपादन करें। –
'फ़ंक्शन (मजेदार/*, यह * *) 'कोडिंग * शैली * है जो इंगित करता है कि यह एक वैकल्पिक पैरामीटर है। 'मजेदार', ज़ाहिर है, बाद में एक प्रतिनिधि समारोह 'fun.call' का उपयोग करके बुलाया गया है,' thisp' को "संदर्भ" के रूप में पास कर रहा है (यानी, यह कार्य निष्पादित होने पर 'इस' का मान बन जाएगा)। –