在JavaScript中用作对象的函数

在JavaScript中用作对象的函数,javascript,Javascript,有一个对象c 它有一个函数c.log(message) 是否可以添加一些变量来使用它们,如c.log.debug=true?它不会这样工作。您可以将“debug”标志作为参数添加到函数中,例如 c.log = function(message, debug) { if debug { // do debug stuff } else { // do other stuff } } 只要稍加修改,就可以这样: var o = {f: function() { co

有一个对象
c

它有一个函数
c.log(message)


是否可以添加一些变量来使用它们,如
c.log.debug=true

它不会这样工作。您可以将“debug”标志作为参数添加到函数中,例如

c.log = function(message, debug) {
  if debug {
    // do debug stuff
  }
  else {
   // do other stuff
  }

}

只要稍加修改,就可以这样:

var o = {f: function() { console.log('f', this.f.prop1) }};

o.f.prop1 = 2;

o.f(); // f 2
o.f.prop1; // 2

Javascript是一种完全面向对象的语言。这意味着几乎所有东西都是一个对象,甚至是函数:

var f = function(){};
alert(f instanceof Function);
// but this statement is also true
alert(f instanceof Object);

// so you could add/remove propreties on a function as on any other object : 
f.foo = 'bar';

// and you still can call f, because f is still a function
f();

嗯,取决于OP到底想做什么,答案要么是肯定的,要么是否定的。这不是一个解决方案:)我认为更好的方法是
c.log()
+
c.logProperties
,但它也不是一个解决方案。不,但是我对函数的原型有一些想法。你的想法是什么?你想完成什么?只是一个简单的带有选项(静默模式、简单组)的console.log包装器。实际上
c
$
。当
o.f
作为参数传递(存储为变量等)时,这将立即中断。是的,但它不是。它是从一个作为对象属性的函数中访问的,函数本身也有属性。我不是批评,只是指出应该注意的;)好的,我同意这不是一个好方法,不应该在健壮的代码中使用。但它仍然允许根据
o.f.prop1
的值在该函数中使用条件,该值是一个读/写属性,即使是从
o
之外。因此,它是灵活的,可能是有用的。