2014-02-16 159 views
0

自动包装动态添加对象属性(功能)我使用此设置将属性添加到一个对象:在一个包装函数

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是否是一个函数?

回答

3

因为你只是遍历Object keys,而不是它的属性。

您需要完全限定的属性来访问它:

if(typeof obj[ prop ] === 'function') { } 
+0

超级准!谢谢你指出这一点! – SquareCat

相关问题