Javascript-Object';s属性由函数node';it’他不是在等

Javascript-Object';s属性由函数node';it’他不是在等,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我有一个相当简单的javascript/jquery对象,由Node.jsscraper构建。一切都正常工作(obj.prod\u name\u select,其对应方返回jquery选择器,它们在节点中进行解析) 这是目标: var product = { name : $(obj.prod_name_select).text(), systemName : function(){ return product.name.

我有一个相当简单的javascript/jquery对象,由
Node.js
scraper构建。一切都正常工作(
obj.prod\u name\u select
,其对应方返回jquery选择器,它们在节点中进行解析)

这是目标:

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);
当我运行这个节点时,除了由函数设置的属性外,它工作正常。这些返回节点中的
[函数]
。以下是控制台中的日志:

{ 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是在运行属性函数之前发生的。解决此问题的最佳方法是什么?

您必须:


您必须执行以下操作,而不仅仅是分配函数:


啊,这很简单。但是,当我立即调用它们时,问题是一些属性依赖于已经设置的其他属性(请参见上面的
product.systemName
,它依赖于已设置的
product.name
,我得到了一个
未定义的
错误。这里的最佳做法是什么?@Jascination:在对象分配给
product
后执行它。但是,为什么要使用函数呢?啊,这很简单。但是,当我调用它们立即是某些属性依赖于已设置的其他属性(请参见上面的
product.systemName
,它依赖于已设置的
product.name
,我得到了一个
未定义的
错误。这里的最佳做法是什么?@Jascination:在对象分配给
product
之后执行它。但是,为什么要使用函数呢?嗯,它们是您分配给正确的领带?你没有运行它们。不确定你想要什么。嗯,它们是你分配给属性的功能?你没有运行它们。不确定你想要什么。
description : (function(){
    return $(obj.description).each(function() {
        var content = $(this).contents();
        $(this).replaceWith(content);
    });
}()),