2014-02-16 157 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

相關問題