如何检查匿名函数是否具有 属性?
How can I check if an anonymous function has a property?
我用匿名函数编写了一个 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 属性 'hasOwnProperty' of undefined
我想阅读并检查数组参数中的匿名函数是否具有 属性。
首先,您在移出第一个值后测试 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
}
]);
我用匿名函数编写了一个 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 属性 'hasOwnProperty' of undefined
我想阅读并检查数组参数中的匿名函数是否具有 属性。
首先,您在移出第一个值后测试 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
}
]);