在javascript中,我知道如果我有一个功能:
var myFunction = function() {
return 'Hello World';
};
然后我可以扩展myFunction
对象并向其添加属性,如下所示:
myFunction.myProperty = 'Goodbye World';
然后我就可以调用该函数并访问属性:
// Returns 'Hello World'
myFunction();
// Returns 'Goodbye World'
myFunction.myProperty;
我想知道是否有办法在现有对象上创建函数;基本上是上面但反过来说:
myFunction = {
myProperty: 'Goodbye World'
};
myFunction ...{sprinkle some magic here}... = function() {
return 'Hello World';
};
// Returns 'Hello World'
myFunction();
// Returns 'Goodbye World'
myFunction.myProperty;
当然,只需将函数分配给myFunction
对象,就会覆盖已分配给变量的现有对象。有没有办法做到这一点,我忽略了?
答案 0 :(得分:0)
没有。您不能像普通对象一样使用它,因为函数对象与某些不同的功能不同。这两个对象不一样。
您可以创建一个函数对象,复制常规对象的所有属性,然后将结果函数对象分配回原始名称,如果您真的想以此向后方式定义事物。
// regular object defined first
var myFunction = {
myProperty: 'Goodbye World'
};
// create function object
var tempFunction = function() {console.log("hi");}
// copy props from regular object to function object
for (var prop in myFunction) {
if (myFunction.hasOwnProperty(prop)) {
tempFunction[prop] = myFunction[prop];
}
}
// assign new function object with copied props back to the original name
myFunction = tempFunction;
// now it's a function object that you can call
myFunction();
// or you can access its properties
var data = myFunction.myProperty;