如何解决如何检查匿名函数是否具有属性?
我已经用匿名函数编写了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')
时出现错误
它表示:::::未捕获的TypeError:无法读取未定义的属性'hasOwnProperty'
解决方法
首先,您将第一个值移出后正在测试e[0]
,因此在最后一次迭代中,您将检查undefined
,因为空数组e[0] === undefined
>
第二,this.a = value
不会向函数添加属性-除非该函数的使用方式与new fn()
类似,否则生成的对象将具有名为a
的属性
可以
! function(e) {
for (; e.length;) {
const fn = e.shift();
var o = new fn();
console.log(o.hasOwnProperty('a'));
}
}([function() {
this.a = function() {
console.log("hello");
};
},function() {
//no property here
}
]);
或者,您可以定义第一个函数,例如
(() => {
const fn = function() { };
fn.a = function(){
console.log("hello");
};
return fn;
})()
由谁来编写代码
! function(e) {
for (; e.length;) {
const fn = e.shift();
//fn(); // you don't actually need to run it
console.log(fn.hasOwnProperty('a'));
}
}([(() => {
const fn = function() {};
fn.a = function() {
console.log("hello");
};
return fn;
})(),function() {
//no property here
}
]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。