Javascript TypeError:base.contacts未定义-如何定义它?
在(var i=0;iJavascript TypeError:base.contacts未定义-如何定义它?,javascript,Javascript,在(var i=0;i
中收到上述错误,无法找到解决方法。下面是相关的代码部分
synckolab.addressbookTools.createTBirdObject = function (base, cards) {
var card = null;
if (base.type === "contact") {
card = Components.classes["@mozilla.org/addressbook/cardproperty;1"].createInstance(Components.interfaces.nsIAbCard);
} else if (base.type === "maillist") {
card = Components.classes["@mozilla.org/addressbook/directoryproperty;1"].createInstance(Components.interfaces.nsIAbDirectory);
card.isMailList = true;
} else {
return null;
}
// for a mailing list add the entries
if (base.type === "maillist") {
card.dirName = this.getCardProperty(base, "DisplayName");
if (this.haveCardProperty(base, "NickName")) {
card.listNickName = this.getCardProperty(base, "NickName");
}
if (this.haveCardProperty(base, "Notes")) {
card.description = this.getCardProperty(base, "Notes");
}
// fill the list
for ( var i = 0; i < base.contacts.length; i++) {
var listCard = cards.get(this.getUID(base.contacts[i]));
card.addressLists.appendElement(listCard, false);
}
} else {
// go through all elements of base
for ( var field in base) {
// skip our own stuff TODO: handle mailing lists!
if (field !== "type" && field !== "synckolab" && field !== "ts" && field !== "contacts" && field !== "isMailList") {
// copy the property from base to card
this.setCardProperty(card, field, this.getCardProperty(base, field));
}
}
}
return card;
synckolab.addressbookTools.createTBirdObject=函数(基本,卡片){
var卡=空;
如果(base.type==“联系人”){
card=Components.classes[“@mozilla.org/addressbook/cardproperty;1”].createInstance(Components.interfaces.nsIAbCard);
}else if(base.type==“邮件列表”){
card=Components.classes[“@mozilla.org/addressbook/directoryproperty;1”].createInstance(Components.interfaces.nsIAbDirectory);
card.isMailList=true;
}否则{
返回null;
}
//对于邮件列表,请添加条目
if(base.type==“邮件列表”){
card.dirName=this.getCardProperty(基本,“DisplayName”);
if(此.haveCardProperty(基,“昵称”)){
card.listNickName=this.getCardProperty(基本,“昵称”);
}
if(此.haveCardProperty(基,“注释”)){
card.description=此.getCardProperty(基本,“注释”);
}
//填写清单
对于(变量i=0;i
};base
是一个交给函数的参数,该函数应该是一个具有(至少)以下属性的对象:
type
contact
显然,它缺少contact
属性,该属性同样应该是一个数组。因此,您应该查看您正在移交给函数的对象
要暂时解决此问题,您可以执行以下操作:
if (base.contacts){
for ( var i = 0; i < base.contacts.length; i++) {
/*...*/
}
}
仔细观察对象。如何调用该函数?base
是一个参数
console.log(base);