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));