这是工作代码:
var test = function ()
{
console.log(test.data);
};
test.data = 'hello';
test.set = function (data)
{
test.data = data;
};
test.set('Test');
test();
这输出Test
到我的 JavaScript 控制台。
现在我想知道是否有办法使用这样的东西来做到这一点?
var test = {
this: function ()
{
console.log(test.data);
},
data: 'hello',
set: function (data)
{
test.data = data;
}
};
正如我在评论中所写,您不能使对象“可调用”。但是,您可以从第一个示例开始自动化该过程:
function extend(func, props) {
for(var prop in props) {
if(props.hasOwnProperty(prop)) {
func[prop] = props[prop];
}
}
return func;
}
然后用以下命令调用它:
var test = extend(function(){
console.log(test.data);
},
{
data: 'hello',
set: function (data) {
this.data = data; // note that I changed it to `this.data`
}
});
DEMO http://jsfiddle.net/fGXGH/
也就是说,我认为你不应该使用这样的函数。如果您只有一个“普通”对象并使用以下命令调用每个方法,则会更容易理解obj.method()
而不是有obj()
.
至少你必须非常仔细地记录这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)