অনেকে এমডিসি ফ্যালব্যাক বাস্তবায়নগুলি ব্যবহার করে (উদাঃ সূচকের জন্য )। তারা সাধারণত কঠোরভাবে মান-সম্মতিযুক্ত এমনকি সমস্ত আর্গুমেন্টের স্পষ্টরূপে পরীক্ষা করার পরিমাণ পর্যন্ত।
দুর্ভাগ্যক্রমে যদিও এটি স্পষ্ট যে লেখকরা এই কোডটিকে তুচ্ছ এবং অবাধে ব্যবহারযোগ্য হিসাবে বিবেচনা করছেন, এটি লিখিতভাবে প্রকাশ করার জন্য সুস্পষ্ট লাইসেন্স-অনুদান বলে মনে হয় না। পুরো উইকিটি হ'ল সিসি অ্যাট্রিবিউশন-শেয়ারএলাইক, যদি তা গ্রহণযোগ্য লাইসেন্স হয় (যদিও সিসি কোডের জন্য নকশাকৃত নয়)।
জেএস-পদ্ধতিগুলি সাধারণভাবে ঠিক দেখায়, তবে কীভাবে ফাংশনগুলি অনুমান করা হয় তার প্রান্তগুলি (যেমন উদাহরণস্বরূপ অপরিজ্ঞাত তালিকা আইটেমগুলি, তালিকায় পরিবর্তনকারী ফাংশন) মানদণ্ডগুলির মতো নয় as এটি অন্যান্য এলোমেলো অ-মানক পদ্ধতিতেও পূর্ণ, এতে ডজি স্ট্রিপট্যাগ এবং অসম্পূর্ণ ইউটিএফ -8 কোডেকের মতো কিছু প্রশ্নবিদ্ধ বিষয় রয়েছে (এটি unescape(encodeURIComponent)
কৌশলটি কিছুটা অপ্রয়োজনীয়ও রয়েছে )।
এটি মূল্যবান কিসের জন্য, আমি এখানে যা ব্যবহার করি তা এখানে (যা আমি এর দ্বারা সর্বজনীন ডোমেনে প্রকাশ করি, যদি এটি একেবারেই কপিরাইটযোগ্য হিসাবে বলা যায়)। এটি এমডিসির সংস্করণগুলির চেয়ে খানিকটা খাটো কারণ এটি টাইপ-স্নিফ করার চেষ্টা করে না যে আপনি পাস নন-ফাংশন কলব্যাকস বা নন-ইন্টিজার সূচকগুলির মতো নির্বোধ কিছু করেননি, তবে এটি বাদ দিয়ে এটি মান-সম্মতিযুক্ত হওয়ার চেষ্টা করে। (আমি কিছু মিস করেছি কিনা তা আমাকে জানান; ;-))
'use strict';
// Add ECMA262-5 method binding if not supported natively
//
if (!('bind' in Function.prototype)) {
Function.prototype.bind= function(owner) {
var that= this;
if (arguments.length<=1) {
return function() {
return that.apply(owner, arguments);
};
} else {
var args= Array.prototype.slice.call(arguments, 1);
return function() {
return that.apply(owner, arguments.length===0? args : args.concat(Array.prototype.slice.call(arguments)));
};
}
};
}
// Add ECMA262-5 string trim if not supported natively
//
if (!('trim' in String.prototype)) {
String.prototype.trim= function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
};
}
// Add ECMA262-5 Array methods if not supported natively
//
if (!('indexOf' in Array.prototype)) {
Array.prototype.indexOf= function(find, i /*opt*/) {
if (i===undefined) i= 0;
if (i<0) i+= this.length;
if (i<0) i= 0;
for (var n= this.length; i<n; i++)
if (i in this && this[i]===find)
return i;
return -1;
};
}
if (!('lastIndexOf' in Array.prototype)) {
Array.prototype.lastIndexOf= function(find, i /*opt*/) {
if (i===undefined) i= this.length-1;
if (i<0) i+= this.length;
if (i>this.length-1) i= this.length-1;
for (i++; i-->0;) /* i++ because from-argument is sadly inclusive */
if (i in this && this[i]===find)
return i;
return -1;
};
}
if (!('forEach' in Array.prototype)) {
Array.prototype.forEach= function(action, that /*opt*/) {
for (var i= 0, n= this.length; i<n; i++)
if (i in this)
action.call(that, this[i], i, this);
};
}
if (!('map' in Array.prototype)) {
Array.prototype.map= function(mapper, that /*opt*/) {
var other= new Array(this.length);
for (var i= 0, n= this.length; i<n; i++)
if (i in this)
other[i]= mapper.call(that, this[i], i, this);
return other;
};
}
if (!('filter' in Array.prototype)) {
Array.prototype.filter= function(filter, that /*opt*/) {
var other= [], v;
for (var i=0, n= this.length; i<n; i++)
if (i in this && filter.call(that, v= this[i], i, this))
other.push(v);
return other;
};
}
if (!('every' in Array.prototype)) {
Array.prototype.every= function(tester, that /*opt*/) {
for (var i= 0, n= this.length; i<n; i++)
if (i in this && !tester.call(that, this[i], i, this))
return false;
return true;
};
}
if (!('some' in Array.prototype)) {
Array.prototype.some= function(tester, that /*opt*/) {
for (var i= 0, n= this.length; i<n; i++)
if (i in this && tester.call(that, this[i], i, this))
return true;
return false;
};
}
এখানে প্রয়োগ করা হয়নি এমন অন্যান্য ইসিএমএ 62২২-৫ পদ্ধতিতে অ্যারে reduce
/ reduceRight
, জেএসওএন এবং কয়েকটি নতুন Object
পদ্ধতি রয়েছে যা জেএস ফাংশন হিসাবে নির্ভরযোগ্যভাবে প্রয়োগ করা যেতে পারে।