Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查匿名函数是否具有属性?_Javascript_Object_Properties_Anonymous Function - Fatal编程技术网

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” 我

我编写了一个带有匿名函数的JavaScript,它有一个属性:


!职能(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;})(