我使用此设置将属性添加到对象:
var obj = {
extend: function(key, obj){
this[key] = obj;
}
}
这很好。但是,在某些情况下,我想添加子对象作为属性:
obj.extend('new', {
test: function(){
console.log('test called');
}
});
我想自动将传递的对象中发生的所有函数(作为第二个参数)obj.extend()
包装到一个函数中,该函数本身将实际的函数调用包装在$(document).ready(function(){})
我的方法是这样的:
extend: function(key, obj){
for(var prop in obj){
if(typeof prop == 'function') {
console.log(prop + ' is a function'
} else
console.log(prop + ' is NOT a function');
}
}
this[key] = obj;
}
但typeof prop
似乎返回,string
而不是“功能”。我检查了各种文章和帖子,但是方法是:
typeof propertyOfObject == 'function'
似乎完全有效。
我在这里做错了什么?为什么typeof propertyOfObject
给我“字符串”?如何检查prop
功能?
因为您只是在遍历Object keys
,而不是其属性。
您需要完全限定该属性才能访问它:
if( typeof obj[ prop ] === 'function' ) { }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句