【发布时间】:2020-11-04 01:13:48
【问题描述】:
我用匿名函数编写了一个 JavaScript 并有一个属性:
!function(e) {
for(;e.length;){
e.shift()();
console.log(e[0].hasOwnProperty('a');
}
}
([(function(){
this.a = function(){
console.log("hello");
}
}),
function(){
//no property here
}]);
当我将e[0].hasOwnProperty('a') 打印到控制台时出现错误
它说::::Uncaught TypeError: Cannot read property 'hasOwnProperty' of undefined
我想读取并检查数组参数中的匿名函数是否具有属性。
【问题讨论】:
-
问题是,一旦你
e.shift()第二次,e[0]是未定义的 - 你也跳过了console.log(e.....)中的第一个函数,这就是你看不到它输出的原因 -
另一个问题是,这些函数都不会拥有
a的属性 -
那么如何在匿名函数中添加属性呢?
-
定义它们时......你不能(不太正确,你可以做一个 IIFE)......但是在你的代码中,
e[0].a = "propertyValue" -
IIFE ...使用属性创建函数...即数组中的第一个...
(() => { const fn = function() { }; fn.a = function(){ console.log("hello"); }; return fn; })()
标签: javascript object properties anonymous-function