diff --git a/test/index.html b/test/index.html index 8246187f6..746662e37 100644 --- a/test/index.html +++ b/test/index.html @@ -50,16 +50,16 @@ // allow bypassing native checks setProperty(Function.prototype, 'toString', (function() { function wrapper() { - setProperty(Function.prototype, 'toString', fnToString); - var result = (this === window.ArrayBuffer || this === window.Set) - ? this.toString() - : fnToString.call(this); - - setProperty(Function.prototype, 'toString', wrapper); + setProperty(funcProto, 'toString', fnToString); + var result = hasOwnProperty.call(this, 'toString') ? this.toString() : fnToString.call(this); + setProperty(funcProto, 'toString', wrapper); return result; } - var fnToString = Function.prototype.toString; - setProperty(Function.prototype, '_toString', fnToString); + var funcProto = Function.prototype, + fnToString = funcProto.toString, + hasOwnProperty = Object.prototype.hasOwnProperty; + + setProperty(funcProto, '_toString', fnToString); return wrapper; }())); @@ -95,10 +95,11 @@ } return hasOwnProperty.call(this, key); } - var hasOwnProperty = Object.prototype.hasOwnProperty, - propertyIsEnumerable = Object.prototype.propertyIsEnumerable; + var objectProto = Object.prototype, + hasOwnProperty = objectProto.hasOwnProperty, + propertyIsEnumerable = objectProto.propertyIsEnumerable; - setProperty(Object.prototype, '_hasOwnProperty', hasOwnProperty); + setProperty(objectProto, '_hasOwnProperty', hasOwnProperty); return wrapper; }())); @@ -113,7 +114,7 @@ setProperty(window, '_ArrayBuffer', window.ArrayBuffer); if (window.ArrayBuffer && window.Uint8Array && !new ArrayBuffer(0).slice) { - ArrayBuffer = (function() { + ArrayBuffer = (function(_ArrayBuffer) { function constant(value) { return function() { return value; @@ -122,7 +123,7 @@ function ArrayBuffer(byteLength) { var buffer = new _ArrayBuffer(byteLength); buffer.slice = function() { - var newBuffer = new _ArrayBuffer(byteLength), + var newBuffer = new _ArrayBuffer(this.byteLength), view = new Uint8Array(newBuffer); view.set(new Uint8Array(this)); @@ -138,7 +139,7 @@ setProperty(ArrayBuffer, 'toString', bufferToString); return ArrayBuffer; - }()); + }(_ArrayBuffer)); } setProperty(window, '_Float64Array', window.Float64Array); if (window._ArrayBuffer == window.ArrayBuffer && window._Float64Array) { @@ -202,8 +203,6 @@ if (window._ArrayBuffer) { ArrayBuffer = _ArrayBuffer; - } else { - setProperty(window, 'ArrayBuffer', undefined); } setProperty(window, '_ArrayBuffer', undefined); diff --git a/test/test.js b/test/test.js index 3d263aa97..691753d4a 100644 --- a/test/test.js +++ b/test/test.js @@ -341,10 +341,7 @@ var _fnToString = funcProto.toString; setProperty(funcProto, 'toString', function wrapper() { setProperty(funcProto, 'toString', _fnToString); - var result = (this === root.ArrayBuffer || this === root.Set) - ? this.toString() - : _fnToString.call(this); - + var result = _.has(this, 'toString') ? this.toString() : _fnToString.call(this); setProperty(funcProto, 'toString', wrapper); return result; }); @@ -391,7 +388,7 @@ function ArrayBuffer(byteLength) { var buffer = new _ArrayBuffer(byteLength); buffer.slice = function() { - var newBuffer = new _ArrayBuffer(byteLength), + var newBuffer = new _ArrayBuffer(this.byteLength), view = new Uint8Array(newBuffer); view.set(new Uint8Array(this));