1

Node.js我有一个由刮板构建的相当简单的 javascript/jquery 对象。一切都按原样工作(obj.prod_name_select并且它的对应物返回 jquery 选择器,它们在 Node 中解析得很好)。

这是对象:

var product = {
    name        : $(obj.prod_name_select).text(),
    systemName  : function(){
                    return product.name.replace(/\s+/g, ' ');
                    },
    gender      : obj.gender,
    infoLink    : link,
    designer    : $(obj.label_name_select).first().text(),
    description : function(){
                    var text = $(obj.description).each(function() {
                                var content = $(this).contents();
                                $(this).replaceWith(content);
                            });
                    return text;
                    },
    price       : $(obj.price_select).first().text(),
    store       : obj.store,
    category    : obj.general_cat,
    spec_cat    : obj.spec_cat
}
console.log(product);

当我用 Node 运行它时,除了由函数设置的属性外,它一切正常。这些返回[FUNCTION]节点。这是来自控制台的日志:

{ name: 'BAGGY PANTS!T',
  systemName: [Function],
  gender: 'men',
  infoLink: 'http://www.hereisthecorrecturl.com',
  designer: 'Fancy Designer',
  description: [Function],
  price: '$180.00',
  store: 'Correct Store Name',
  category: 'Correct Category',
  spec_cat: 'Correct Category' }

这是一个异步问题吗?似乎 console.log 是在运行属性函数之前发生的。解决这个问题的最佳方法是什么?

4

1 回答 1

1

您必须立即执行它,而不是仅仅分配函数:

description : (function(){
    return $(obj.description).each(function() {
        var content = $(this).contents();
        $(this).replaceWith(content);
    });
}()),
于 2013-06-05T01:32:40.780 回答