Skip to content

Commit

Permalink
Merge pull request #166 from piglione73/master
Browse files Browse the repository at this point in the history
Avoid polluting Array.prototype with enumerable properties.
  • Loading branch information
Mikhus authored Apr 23, 2018
2 parents ba22d47 + 3f53e89 commit a9791bb
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 53 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ dist/
complexity/
*es6.js
test/cjs/bundle.js
package-lock.json
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "canvas-gauges",
"version": "2.1.4",
"version": "2.1.5",
"homepage": "https://github.com/Mikhus/canvas-gauges",
"authors": [
"Mykhailo Stadnyk <[email protected]>"
Expand Down
2 changes: 1 addition & 1 deletion gauge.min.js.map

Large diffs are not rendered by default.

107 changes: 56 additions & 51 deletions lib/polyfill.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,74 +48,79 @@ if (!Object.assign) {
*/
/* istanbul ignore next */
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(searchElement, fromIndex) {
var k;
Object.defineProperty(Array.prototype, "indexOf", {
value: function(searchElement, fromIndex) {
var k;

if (this === null) {
throw new TypeError('"this" is null or not defined');
}
if (this === null) {
throw new TypeError('"this" is null or not defined');
}

var O = Object(this);
var len = O.length >>> 0;
var O = Object(this);
var len = O.length >>> 0;

if (len === 0) {
return -1;
}
if (len === 0) {
return -1;
}

var n = +fromIndex || 0;
var n = +fromIndex || 0;

if (Math.abs(n) === Infinity) {
n = 0;
}
if (Math.abs(n) === Infinity) {
n = 0;
}

if (n >= len) {
return -1;
}
if (n >= len) {
return -1;
}

k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);

while (k < len) {
if (k in O && O[k] === searchElement) {
return k;
}
while (k < len) {
if (k in O && O[k] === searchElement) {
return k;
}

k++;
}
k++;
}

return -1;
};
return -1;
}
});
}

/**
* @external {Array.fill} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
*/
/* istanbul ignore next */
if (!Array.prototype.fill) {
Array.prototype.fill = function(value) {
if (this === null) {
throw new TypeError('this is null or not defined');
}

var O = Object(this);
var len = O.length >>> 0;
var start = arguments[1];
var relativeStart = start >> 0;
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
while (k < final) {
O[k] = value;
k++;
}

return O;
};
Object.defineProperty(Array.prototype, "fill", {
value: function(value) {
if (this === null) {
throw new TypeError('this is null or not defined');
}

var O = Object(this);
var len = O.length >>> 0;
var start = arguments[1];
var relativeStart = start >> 0;
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
while (k < final) {
O[k] = value;
k++;
}

return O;
}
});

}

/**
Expand Down

0 comments on commit a9791bb

Please sign in to comment.