如何删除对已删除属性的子代的引用

时间:2019-05-24 14:08:20

标签: javascript oop

删除对象属性时,需要删除所有分散在应用程序周围的对后代属性的引用:

from seleniumwire import webdriver
from selenium.common.exceptions import ElementClickInterceptedException,NoSuchElementException
import logging

def scrape_website(url):

    # Configure browser driver
    options = webdriver.ChromeOptions()
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-gpu')
    options.add_argument('--headless')

    #Instantiate driver and navigate to URL
    driver = webdriver.Chrome(chrome_options=options)
    driver.implicitly_wait(30)
    driver.get(url)

因此,我要么需要一种方法来删除对后代属性的所有引用,要么我需要一种方法来表明该引用已绑定到已删除的父对象,并在我的计算中将其忽略。

什么是实现此目的的正确/最可维护的方法?

2 个答案:

答案 0 :(得分:2)

除非出于性能原因确实需要将所有子代保留在一个数组中,否则更简单的解决方案是将all_children数组废弃,转而使用返回所有子代数组的函数,例如

function getAllChildren () {
  var all_children = [];
  /* pseudocode:
  foreach people(children) {
    foreach children(child) {
        all_children.push(child);
    }
  }
  */
  return all_children;
}

这样,如果删除Mary或Homer,则调用此函数将自动反映出删除。

答案 1 :(得分:0)

如果我正确理解了这个问题,则您担心在从对象数组中删除父对象后,子对象仍然存在于内存中。 javascript并非如此,因为该语言未实现真正的类。因此,新ChildClass()的每个副本都是按值而不是引用传递的。

因此,您无需跟踪子引用即可对其进行清理。