0
Есть ли что-то аналогичное Object.create(null)
, где у объекта нет прототипа, для Array
?Есть ли аналогичный способ создания массива без его прототипа?
var someArray = [];
someArray.__proto__ = null;
Есть ли что-то аналогичное Object.create(null)
, где у объекта нет прототипа, для Array
?Есть ли аналогичный способ создания массива без его прототипа?
var someArray = [];
someArray.__proto__ = null;
Нет, нет такой вещи, как Array.create
, что создает массивы без прототипа. Однако __proto__
презирают (это только наследие), надлежащим образом будет
var someWeirdArray = Object.setPrototypeOf([], null);
, который также имеет то преимущество, что одно выражение.
И только слово предостережения (что вы, надеюсь, не нужно): Не делайте этого! Нет веской причины.
Мне интересно, зачем вам это нужно? – AlexD
Массив без его прототипа не будет вести себя как массив. Это будет в основном пустой объект (прототип - это то, что делает этот объект массивом) – slebetman
@slebetman, вы уверены, что он будет пустым? Object?? потому что 'console.log' показывает, что он все еще' Array': 'var a = []; a .__ proto__ = null; Array.prototype.push.call (a, 123); console.log (a); 'будет показывать' [123] ', а не' {'123'} '. –