Javascript 如何检查匿名函数是否具有属性?
我编写了一个带有匿名函数的JavaScript,它有一个属性:Javascript 如何检查匿名函数是否具有属性?,javascript,object,properties,anonymous-function,Javascript,Object,Properties,Anonymous Function,我编写了一个带有匿名函数的JavaScript,它有一个属性: !职能(e){ 对于(;e.长度;){ e、 移位(); console.log(e[0].hasOwnProperty('a'); } } ([(函数(){ this.a=函数(){ console.log(“你好”); } }), 函数(){ //这里没有财产 }]); 我在将e[0].hasOwnProperty('a')打印到控制台时出错 它说:::未捕获类型错误:无法读取未定义的属性“hasOwnProperty” 我
!职能(e){
对于(;e.长度;){
e、 移位();
console.log(e[0].hasOwnProperty('a');
}
}
([(函数(){
this.a=函数(){
console.log(“你好”);
}
}),
函数(){
//这里没有财产
}]);
我在将e[0].hasOwnProperty('a')
打印到控制台时出错
它说:::未捕获类型错误:无法读取未定义的属性“hasOwnProperty”
我想读取并检查数组参数中的匿名函数是否具有属性。首先,在移出第一个值后,您正在测试
e[0]
,因此在最后一次迭代中,您将检查未定义的,因为对于空数组e[0]==未定义的
其次,this.a=value
不会向函数添加属性-除非该函数像new fn()
那样使用,否则生成的对象将有一个名为a
你可以
!函数(e){
对于(;e.长度;){
常数fn=e.shift();
var o=新的fn();
log(o.hasOwnProperty('a'));
}
}([功能(){
this.a=函数(){
console.log(“你好”);
};
},
函数(){
//这里没有财产
}
])
问题在于,一旦您第二次e.shift()
时,e[0]
是未定义的-您还跳过了控制台.log(e…)中的第一个函数
这就是你看不到它输出的原因。另一个问题是,这些函数都不会有属性a
那么我如何在匿名函数中添加属性呢?在定义它们时…你不能(不完全正确,你可以做iLife)…但是在你的代码中,e[0]。a=“propertyValue”
iLife…使用属性创建函数…即数组中的第一个属性…(()=>{const fn=function(){};fn.a=function(){console.log(“hello”);};return fn;})(