我使用此设置向对象添加属性:
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
是否为函数?
答案 0 :(得分:3)
因为你只是迭代Object keys
,而不是它的属性。
您需要完全限定该属性才能访问它:
if( typeof obj[ prop ] === 'function' ) { }