JavaScript:如何动态定义方法?

JavaScript:如何动态定义方法?,javascript,Javascript,Object.defineProperty可用于定义属性和getter/setters。但它似乎不支持设置作为函数(方法)的属性。为什么? 在此之后,obj.myMethod是undefined传递给Object的第三个参数。如果要执行类似操作,defineProperty应该是具有value属性的对象: var obj={}; defineProperty(obj,'myMethod',{value:function(){ console.log('Hello!'); }}) obj.myM

Object.defineProperty
可用于定义属性和
getter
/
setter
s。但它似乎不支持设置作为函数(方法)的属性。为什么?


在此之后,
obj.myMethod
undefined
传递给
Object的第三个参数。如果要执行类似操作,defineProperty
应该是具有value属性的对象:

var obj={};
defineProperty(obj,'myMethod',{value:function(){
console.log('Hello!');
}})

obj.myMethod()您可以使用此模式:

var obj={c:3};
obj=Object.assign({},obj{
a:函数(){
控制台日志(“测试”);
}
});
obj.a();

控制台日志(obj.c)

语法:Object.defineProperty(obj、prop、descriptor)

obj要定义属性的对象

prop要定义或修改的属性的名称或符号

描述符正在定义或修改的属性的描述符

constobj={};
Object.defineProperty(obj,“myobject”{
价值:20,
可写:false
});
obj.myobject=10;

文件写入(对象myobject)来自的官方文档。我建议您在实际实现动态函数之前阅读与创建动态函数相关的问题

这是一个例子:

函数testMe(){
var obj={}
obj.myFunc=新函数('a','b','returna+b');
var el=document.getElementById(“test”).innerHTML=obj.myFunc(1,2);
}


Try
阅读总是有用的。@Teemu值得一提的是,尽管MDN是一个非常好的源代码,但它不应该被称为“文档”:任何人都可以像wiki一样编辑它。有些MDN页面有错误。@GerardoFurtado是的,我知道,我在MDN上有贡献。MDN JS文档或多或少是唯一的JavaScript文档,ECMA Sript标准并不完全是一个文档。还是你想让我写“RTFM”呢?@Teemu是的,我们都知道MDN成为了事实上的文档,尽管它具有wiki的性质。不,我从不建议“RTFM”或类似的东西,除非F的意思是“fricking”。
var obj = {};
Object.defineProperty(obj, 'myMethod', function () {
    console.log('Hello!');
})