定义对象后定义对象上的函数

时间:2013-11-13 01:19:09

标签: javascript function object

在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对象,就会覆盖已分配给变量的现有对象。有没有办法做到这一点,我忽略了?

1 个答案:

答案 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;