Существует ли метод, который я могу переопределить на объекте JavaScript управлять тем, что отображено console.log?

  1. GCC не реализует rd.entropy () правильно - он всегда возвращает 0 (по крайней мере, в Mac OS X).
  2. К сожалению, похоже, что нет никакой возможности смешать дополнительную энтропию в random_device, что важно, потому что обычно / часто (посмотрите на Linux / dev / random и / dev / urandom, а также на реализацию Intel RDRAND) реализует генератор псевдослучайных чисел под капотом. Я бы хотел улучшить свой результат, введя что-то, что я считаю случайным, чтобы смешиваться с тем, что производит его источник энтропии. Опять же, поскольку это устройство (или модуль ядра) внутренне реализует криптографический алгоритм для обработки битов энтропии, которые он получает для генерации своего вывода, я хотел бы иметь возможность «рандомизировать» этот процесс больше путем инъекции мои собственные данные должны смешиваться с любой энтропией, которую выбирает устройство. Например, рассмотрим Java SecureRandom (). Это не позволяет вам устанавливать семя (которое действительно преобразует его в PRNG), но оно будет радостно смешивать то, что вы предоставляете, тем, что оно использует, чтобы «рандомизировать» свой результат еще больше.
  3. Я лично предпочитают RDRAND. Небольшая сборная библиотека с компактным интерфейсом C. Вот ссылки: Дэвид Джонсон из Intel объясняет RDRAND на Stackoverflow Указатели Stackoverflow для источника библиотеки RDRAND для Windows, Linux и Mac OS X Блог Intel в библиотеке RDRAND , и ссылку для скачивания
10
задан agnoster 2 June 2010 в 19:27
поделиться

3 ответа

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

var o = {};
o.toString = function() {
    return "Three blind mice";
};

console.log("" + o);
console.log(o.toString());
4
ответ дан 4 December 2019 в 03:38
поделиться

Можно сделать это в Chrome в наше время с devtools пользовательским средством форматирования. Они, кажется, официально не документируются нигде и не включены по умолчанию - таким образом, необходимо включить им в (Настройки Инструментов Dev)>, Консоль> Включает Пользовательские Средства форматирования. Но тогда можно добавить пользовательское средство форматирования для объекта:

class CustomClass {
    constructor (foo, bar) { this.foo = foo; this.bar = bar; }
}

window.devtoolsFormatters = (window.devtoolsFormatters || []).concat([{
    header: (obj) => {
        if (obj instanceof CustomClass) {
            return ['div', {}, `CustomClass(${obj.foo}, ${obj.bar})`];
        } else {
            return null; // fall back to default formatter
        }
    },
    hasBody: () => true, // if the user can expand to get more info
    body: (obj) => {
        return ['div', {},
            ['span', {style: 'display: block; font-weight: bold'}, 'CustomClass'],
            ['span', {style: 'display: block; margin-left: 2em'}, `foo: ${obj.foo}`],
            ['span', {style: 'display: block; margin-left: 2em'}, `bar: ${obj.bar}`],
        ];
    }
}]);

Несколько слов предупреждения:

  • необходимо возвратить JsonML ([имя тега, attrs, дети...]) список от средства форматирования. При возврате недопустимого JsonML или пустой строки это или перестанет работать тихо или бросит ошибку.
  • средство форматирования должно иметь заголовок () и hasBody () функция, и если hasBody () возвращает true, должен иметь тело () функция также. Иначе Ваше средство форматирования будет или тихо проигнорировано или бросит ошибку.
  • Много типов элемента не поддерживается. Я только смог заставить div и span работать; p, strong, и другие элементы все перестали работать. Но можно эмулировать их с CSS.
  • Эти window.devtoolsFormatters массив является пустым по умолчанию, но я добавил проверку, потому что расширения могут уже добавить свои собственные средства форматирования.

можно найти немного больше информации здесь: https://docs.google.com/document/d/1FTascZXT9cxfetuPRT2eXPQKXui4nWFivUnS_335T3U/preview

0
ответ дан 4 December 2019 в 03:38
поделиться

Вы должны получить лучший результат от Firebug, вы должны получить

var a = function(){};
console.log(a); // output: function 
a.toString = function(){ return 'a'; };
console.log(a); // output: function, {toString()}
a.valueOf = function(){ return 'v'; };
console.log(a); // output: function, {toString(), valueOf()}

http://code.google.com / p / fbug / issues / detail? id = 3117

0
ответ дан 4 December 2019 в 03:38
поделиться