Задать вопрос
Nikulio
@Nikulio
NaN !== NaN

Почему не удаляется свойство объекта?

Например, есть у нас такой экземпляр:
function Func(name) {
  this.name = name;
}


Дальше я вбиваю delete Func.name и консоль отдает true
Дальше я создают новый экземпляр, присваиваю ему name и получаю доступ к ней! Почему так?
var func2 = new Func('hello');
func2.name  // Es ist arbeiten!
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Потому что this.name не то же самое, что Func.name или Func.prototype.name. Вы в конструкторе записываете свойство экземпляру объекта, а удалить пытаетесь из самого объекта.
Вот так будет работать, как вы ожидаете:
var func2 = new Func('hello');
delete func2.name;
func2.name // undefined


Может, это поможет вам разобраться:
function Func(name) {
  this.name = name;
}

Func.prototype.name = 'Foo';

var f = new Func('Bar');

console.log(f.name); // "Bar"
delete f.name;
console.log(f.name); // "Foo"
delete f.name;
console.log(f.name); // "Foo"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы