Object.prototype в JavaScript

У меня есть код JavaScript, который определяет функцию getElementsByAttribute следующим образом:

Object.prototype.getElementsByAttribute = function(attr) {
    var children = this.all || this.getElementsByTagName('*'),
        ret = [], i, c;
        for( i=0; i

Это работает во всех браузерах, в которых я тестировал, кроме Internet Explorer 7 (и предположительно более ранней версии) - эти браузеры бросают "Объект не делает" Единственное, что мне не нравится, это то, что объекты уже были созданы, когда я определил функцию прототипа ...
Мой ...

[Python 3.1]

Я следую за концепцией дизайна, согласно которой кортежи должны иметь известную длину (см. этот комментарий ), а кортежи неизвестной длины в большинстве случаев следует заменять списками. . У меня вопрос: при каких обстоятельствах мне следует отклониться от этого правила?

Например, я понимаю, что кортежи быстрее создаются из строковых и числовых литералов, чем списки (см. другой комментарий ). Итак, если у меня есть критически важный для производительности код, в котором выполняются многочисленные вычисления, такие как sumproduct (tuple1, tuple2) , следует ли мне переопределить их для работы со списками, несмотря на снижение производительности? ( Суммарное произведение ((x, y, z), (a, b, c)) определяется как x * a + y * b + z * c , и его аргументы имеют неопределенной, но равной длины).

А как насчет кортежа, который автоматически создается Python при использовании def f (* x) ? Я полагаю, это не то, что я должен заставлять перечислять каждый раз, когда использую его.

Между прочим, создать (x, y, z) быстрее, чем [x, y, z] (для переменных, а не для литералов)?

6
задан Community 23 May 2017 в 12:23
поделиться