[英]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.