在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
之外。因此,它是灵活的,可能是有用的。