2015-12-15 5 views
0

Есть ли что-то аналогичное Object.create(null), где у объекта нет прототипа, для Array?Есть ли аналогичный способ создания массива без его прототипа?

var someArray = []; 
someArray.__proto__ = null; 
+6

Мне интересно, зачем вам это нужно? – AlexD

+0

Массив без его прототипа не будет вести себя как массив. Это будет в основном пустой объект (прототип - это то, что делает этот объект массивом) – slebetman

+0

@slebetman, вы уверены, что он будет пустым? Object?? потому что 'console.log' показывает, что он все еще' Array': 'var a = []; a .__ proto__ = null; Array.prototype.push.call (a, 123); console.log (a); 'будет показывать' [123] ', а не' {'123'} '. –

ответ

1

Нет, нет такой вещи, как Array.create, что создает массивы без прототипа. Однако __proto__ презирают (это только наследие), надлежащим образом будет

var someWeirdArray = Object.setPrototypeOf([], null); 

, который также имеет то преимущество, что одно выражение.


И только слово предостережения (что вы, надеюсь, не нужно): Не делайте этого! Нет веской причины.

Смежные вопросы