2013-12-16 3 views
0

Как я понял delete оператор удаляет соответствующую ссылку, а не объект, расположенный по этой ссылке. Пусть у нас есть простой объект и прикладной delete оператора к одному из этого свойства, напримерПонятие оператора удаления в JS

var o= {prop: "property", test: "sometext"}; 
delete o.prop; 

ли мы стерли "property" снабжать струной, тетивой и т.п. себя или мы стерли ссылку на эту только и "property" строки будут удалены с помощью сборщика мусора, как нет -Справка.

ответ

2

Технически, да, вы удалили свойство и само его значение, поскольку оно больше не ссылается, будет отдельно выгружаться.

Вы можете проверить это, указав объект, на который ссылаются два свойства: один из них не будет затронут, если вы удалите другое свойство.

1

Этот код ниже поможет вам получить визуальный результат с помощью тестового объекта и console.log, чтобы вы могли видеть, что происходит с свойством объекта.

Перед удалением, когда мы console.log(); obj.prop1, он скажет «yo» в вашей консоли. после удаления, это станет неопределенным.

Вы можете использовать delete, чтобы очистить неиспользуемые свойства, когда вы либо закончили с ними, либо больше не нуждаетесь в них, это не большое увеличение скорости, но может быть полезно, когда ваш сайт просматривается с помощью дешевой машины.

<script type="text/javascript"> 

    var obj = { 

     prop1: 'yo', 
     prop2: 'yo' 

    }; 

    console.log(obj.prop1); 
    delete obj.prop1; 
    console.log(obj.prop1); 

    console.log(obj); //Will return only prop 2, prop1 is removed from the object. 

</script> 

PS:

После входа всего объекта свойство ушло полностью.

1

В соответствии с its repsective MDN article ключевое слово delete в JavaScript «удаляет свойство из объекта». Тем не менее, если o.prop ссылается на объект (вместо строки), ссылка на этот объект (то есть o.prop) будет удалена, но объект, о котором идет речь, может оставаться в памяти, если есть какая-то другая переменная/свойство, указывающая на него ,

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