簡體   English   中英

如何在對象中找到特定項目不是javascript中的函數

[英]how to find a specific item in the object is not a function in javascript

我有以下代碼來管理圖書集。

var Book = function(title,pages,priority){
    this.title = title;
    this.pages = pages;
    this.priority = priority;
    this.GetMaxmimumDays=function(){ 
        var effortCalculator = new EffortCalculator(this.pages);
        return effortCalculator.CalculateDays();
    }
};
var BooksCollection = (function(){
    var books=[];
    return {
        Add:function(book){
            books.push(book);
        },
        Remove:function(title){
            for(var i=0;i<books.length;i++){
                if(books[i]["title"]==title){
                    books[i]["title"]=null;
                }
            }
        },
        Print:function(){
            for(var i=0;i<books.length;i++){
                var itemText="";
                for(item in books[i]){
                    itemText=itemText+""+item+":"+books[i][item];
                }
                alert("item"+itemText); /** itemText prints the string includes the function definition. **/
            }
        },
        Count:books.length,
        SortByPriority:function(){

        }
    };
})();

在上面的代碼中,BooksCollection.Print()打印集合中的everyItem和everyProperty。 但是書籍實例有功能成員。 同樣是在警報中打印。

我將Print()包裹在下面,以隱藏輸出中正在打印的功能。

        Print:function(){
            for(var i=0;i<books.length;i++){
                var itemText="";
                for(item in books[i]){
                    if(!(item instanceof Function)){
                        itemText=itemText+""+item+":"+books[i][item];
                    }
                }
                alert("item"+itemText);
            }
        }

但事情仍然是消極的。 我試過(typeof(item)===“Function”)但是typeof(item)仍然是“String”。

我想知道typeof和instanceOf關鍵字的可疑行為。

你可以在這里找到一個小提琴。 http://jsfiddle.net/saravanakumarrc/rDEnt/40/

請幫我找出解決方案。

在您的情況下, typeof item將始終是一個string - 它是枚舉Book的屬性的關鍵。

您想要測試的是該項目的價值 ,因此您需要類型的typeof books[i][item]

 for(item in books[i]){
     if(typeof books[i][item] != 'function'){
         itemText=itemText+""+item+":"+books[i][item]+ '\r\n';
     }
 }

實例: http//jsfiddle.net/kDHfU/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM