Javascript 将一个函数指定为另一个函数';s属性
为什么这样做有效:Javascript 将一个函数指定为另一个函数';s属性,javascript,function,properties,scope,Javascript,Function,Properties,Scope,为什么这样做有效: var myFunction = function() {} myFunction.printSomething = function() { console.log("This is something"); } myFunction.printSomething(); 而这不是吗?(“预期标识符”问题) 在第一个示例中,我是否真的成功创建了myFunction对象的新printSomething属性?考虑到函数应该是javascript中的对象,我希望两者都
var myFunction = function() {}
myFunction.printSomething = function() {
console.log("This is something");
}
myFunction.printSomething();
而这不是吗?(“预期标识符”问题)
在第一个示例中,我是否真的成功创建了myFunction对象的新printSomething属性?考虑到函数应该是javascript中的对象,我希望两者都能起作用。我理解错了吗?您需要从函数返回一个对象,并且可以按预期调用该对象 为了更好地理解,请检查我创建的以下代码片段
var myFunction=function(){
返回{
printSomething:function(){
log(“这是某种东西”);
}
};
}
myFunction().printSomething()代码>如果您这样做,第二个示例将起作用:
var myFunction = function() {
return {
printSomething: function() {
console.log("This is something");
}
}
}
myFunction().printSomething();
您使用的语法不起作用。你不能只让printSomething:function(){}代码>在一个函数的中间打开。您可以使用var printSomething=function(){}
,或者您可以像我那样返回一个对象,其中printSomething:function(){}
是该对象的一部分,感谢Pointy在他的注释中为我指明了正确的方向
是的,函数确实是对象,它们可以像任何其他对象一样包含属性
但是,在第二个示例中,{}
中的代码块是调用myFunction时执行的,而不是将其定义为对象
var myFunction = function() {
// 'printSomething:' can't just be hanging like that!
printSomething: function() {
console.log("This is something");
}
}
myFunction.printSomething();
第二个示例不起作用,因为这不是有意义的JavaScript语法。函数确实是对象,但函数头后面的{}
是用于代码块的,而不是对象初始值设定项。它不是JSON对象。这只是一个物体。对不起,我弄错了。将更新答案。:-)谢谢你的指点。这很有见地。但是我想你的意思是myFunction()。在那个函数调用中printSomething()
?
var myFunction = function() {
// 'printSomething:' can't just be hanging like that!
printSomething: function() {
console.log("This is something");
}
}
myFunction.printSomething();