定义隔离范围数组javascript

时间:2016-11-03 09:35:39

标签: javascript arrays prototype

我正在研究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 :(

1 个答案:

答案 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