在定义对象后在对象上定义函数
Define function on object after object has been defined
在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
对象将覆盖已分配给变量的现有对象。 有没有我忽略的方法
No. 你不能把一个普通的对象当作函数对象来使用它,因为函数对象是具有一些不同功能的不同的东西。 这两个对象并不相同。
如果你真的想以这种向后的方式定义事物,你可以创建一个函数对象,复制常规对象的所有属性,然后将生成的函数对象赋回原始名称。
// 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;
相关文章:
- 在Javascript服务器/客户端中共享对象定义
- 高级布线和单个对象定义
- Javascript 对象定义
- 是否可以为数组中的每个对象定义事件侦听器
- 如何在多个文件中拆分 JavaScript 对象定义
- 将对象定义为仅包含特定类型的元素
- 如何在 javascript 中为 dom 对象定义函数
- 您可以在 JavaScript 中的私有方法中访问对象定义的属性吗?
- 在 ecma-script-6 中将对象定义为常量
- 在 JavaScript 中使用对象定义局部变量
- 如何在 JS 对象定义中引用字段
- 属性的对象定义属性设置器
- Three.js对象定义未定义
- 对象定义有两种方式-有什么区别
- JavaScript-如何在对象定义中定义属性
- 对象定义中的方括号表示法
- 仅为{..}对象定义原型
- 在对象定义中的javascript Repeating属性中(在大括号内).这是个错误吗
- 特殊的JavaScript结构:对象定义中的对象类型变量
- 在javascript对象定义中连接字符串