2016-03-17 1 views
-1

Я использую console.log(value) однако, когда я использую console.log() Если бы я хотел поиграть с вещами и сделать это делать другие вещи, есть способ, которым я могу создать функцию, как ...Можно ли добавить точку в имени переменной в Javascript?

var console.log = (function() { // something }

+0

Насколько я знаю, вы не можете добавить точку в имя переменной. var name.log не будет работать. –

+2

Точечная обозначение обозначает ключ в объекте, а не обычное имя переменной. Таким образом, вы можете сделать это, чтобы перезаписать весь объект: 'window.console = {};' Или вы могли бы это сделать, чтобы перезаписать эту функцию: 'console.log = function() {/ * something * /}' Что эквивалентно к этому: 'console [" log "] = function() {}' – user162097

ответ

3

Вы могли бы создать оболочку для функции console.log, а затем только использовать обертку для записи на консоль:

function myCustomConsoleLog() { 
    // do stuff with your arguments 
    console.log(arguments) 
} 

Теперь вместо звонка console.log(vars) вы должны позвонить по телефону myCustomConsoleLog(vars).

+0

ahh, поэтому я все еще могу использовать 'console.log()' здесь и передать через то, что я хочу, в 'console', и он все равно будет действовать то же самое, и я просто добавляю еще одну логику выше, которая обрабатывает то, что я хочу? – PourMeSomeCode

+0

Действительно - все, что делает «myCustomConsoleLog», в конце концов вызывает исходный 'console.log', но теперь вы можете делать то, что захотите, до/после его вызова. – Lix

+0

Приветствия! Я даже не думал об этом подходе, который намного лучше и проще. Благодаря! – PourMeSomeCode

0

Это невозможно, как вы пытаетесь.

Что вы можете сделать, это создать объект и добавить к нему некоторые объекты:

var obj = {}; // we create an object where we will add the functions 
obj.i = 4; // a value 
obj.log = function() { }; // a function 
0

вы можете сделать то же самое, как:

var console = {log:function(){ }}; 
0

Я думаю, вы могли бы сделать что-то вроде этого:

var console = {} 
console.log = "alert me!" 
alert(console.log); 

Это то, что вы имели в виду?

2

Не требуется Объявлениеconsole.log еще раз, потому что оно уже объявлено.

В Javascript console является глобальной переменной. Ничто не мешает вам добавлять, редактировать или удалять из него свойства.

Так что да, вы можете просто присвоить различные функции console.log или то, что вы хотите:

console.log = function(foo, bar) { ... } 
console.anotherProperty = { ... } 

Однако, если вы пытаетесь создать foo.bar переменную, которая делает не существуют еще, вы могли бы делают это по-разному:

// first approach 
var foo; 
foo.bar = function() { ... }; 

// second approach 
var foo = { 
    bar: function() { ... }; 
}; 

// third approach 
var fnBar = function() { ... }; 
var foo = { bar: fnBar }; 

Смотри на Console API docs и Working with objects.

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