我正在研究react app。有些问题是某些第三方库扩展了Array.prototype
。它们为Array.prototype添加了额外的属性。
所以,每当我定义
时,在我的代码中var myArray = [];
console.log(myArray); // those extended coming with it.
我该如何避免这种情况。
我尝试过这种方式的一种方式:
function myArray()
{
this.array = new Array();
return this.array;
}
var myArray = myArray(); //but no luck :(
答案 0 :(得分:0)
// code extending Array.prototype
Array.prototype.log = function(){
console.log( this );
};
// code extracting the native Array from an iframe
var MyArray = getNativeArray();
function getNativeArray(){
var iframe = document.createElement("iframe");
iframe.src = "about:blank";
document.body.appendChild(iframe);
var native = iframe.contentWindow.Array;
document.body.removeChild(iframe);
return native;
}
// usage and comparison
var array1 = new Array(1,2,3);
var array2 = new MyArray(1,2,3);
console.log( array1 ); // [1,2,3]
console.log( array2 ); // [1,2,3]
console.log( typeof array1.log ); // "function"
console.log( typeof array2.log ); // "undefined"
console.log( array1 instanceof Array ); // true
console.log( array2 instanceof Array ); // false
console.log( Array.isArray(array1) ); // true
console.log( Array.isArray(array2) ); // true