Основываясь на предыдущих ответах на этот вопрос; следующая функция будет разделять строку (str
) n-number (size
) символов.
function chunk(str, size) {
return str.match(new RegExp('.{1,' + size + '}', 'g'));
}
(function() {
function chunk(str, size) {
return str.match(new RegExp('.{1,' + size + '}', 'g'));
}
var str = 'HELLO WORLD';
println('Simple binary representation:');
println(chunk(textToBin(str), 8).join('\n'));
println('\nNow for something crazy:');
println(chunk(textToHex(str, 4), 8).map(function(h) { return '0x' + h }).join(' '));
// Utiliy functions, you can ignore these.
function textToBin(text) { return textToBase(text, 2, 8); }
function textToHex(t, w) { return pad(textToBase(t,16,2), roundUp(t.length, w)*2, '00'); }
function pad(val, len, chr) { return (repeat(chr, len) + val).slice(-len); }
function print(text) { document.getElementById('out').innerHTML += (text || ''); }
function println(text) { print((text || '') + '\n'); }
function repeat(chr, n) { return new Array(n + 1).join(chr); }
function textToBase(text, radix, n) {
return text.split('').reduce(function(result, chr) {
return result + pad(chr.charCodeAt(0).toString(radix), n, '0');
}, '');
}
function roundUp(numToRound, multiple) {
if (multiple === 0) return numToRound;
var remainder = numToRound % multiple;
return remainder === 0 ? numToRound : numToRound + multiple - remainder;
}
}());
#out {
white-space: pre;
font-size: 0.8em;
}
<div id="out"></div>
Если вы хотите распечатать объект в целях отладки, используйте код:
var obj = {prop1: 'prop1Value', prop2: 'prop2Value', child: {childProp1: 'childProp1Value'}}
console.log(obj)
отобразит:
Примечание: вы должны только зарегистрировать объект. Например, это не сработает:
console.log('My object : ' + obj)
Примечание ': Вы также можете использовать запятую в методе log
, тогда первой строкой вывода будет строка, а после объект будет отображен:
console.log('My object: ', obj);
Что ж, Firefox (спасибо @Bojangles за подробную информацию) имеет метод Object.toSource ()
, который печатает объекты как JSON и function () {}
.
Думаю, этого достаточно для большинства целей отладки.
var output = '';
for (var property in object) {
output += property + ': ' + object[property]+'; ';
}
alert(output);
В ES2015, с помощью краткий синтаксис объявления свойства для литералов объектов, можно зарегистрировать объекты, также кратко сохранив имена переменной:
console.log("bwib:", bwib, "bwab:", bwab, "bwob": bwob) // old way A
console.log({bwib: bwib, bwab: bwab, bwob: bwob}) // old way B
console.log({bwib, bwab, bwob}) // ES2015+ way