防止全局,进程,GLOBAL和根参数在for循环中进行迭代

时间:2015-11-14 09:21:07

标签: node.js express

我的一个快速应用程序模块上有一个函数,参数页面传递给它:

module.exports.savePage =   function (page){


    console.log('-- Running M2PagePers.savePage.. ');

// il faut prévoir que quelqu'un utilise M2Page.save() pour un update
        for(var prop in page) {
            if(typeof(page[prop]) != 'function' && page.hasOwnProperty(prop))
            console.log('page['+ prop +'] : ' + page[prop] + ' propertyIsEnumerable ? ' + page.propertyIsEnumerable(prop));
        };
};

但是我在页面参数中有更多属性,我没想到会看到哪些是全局进程 GLOBAL 和的

page[global] : [object global] propertyIsEnumerable ? true
page[process] : [object process] propertyIsEnumerable ? true
page[GLOBAL] : [object global] propertyIsEnumerable ? true
page[root] : [object global] propertyIsEnumerable ? true
page[console] : [object Object] propertyIsEnumerable ? true
page[url] : urltest1 propertyIsEnumerable ? true
page[type] : typetest1 propertyIsEnumerable ? true
page[definition] : deftest1 propertyIsEnumerable ? true
page[nb_visiteurs] : 656555 propertyIsEnumerable ? true

我并不关心他们来自哪里(我猜他们是一些node.js全局变量..)但是即使我试图用hasOwnProperty和propertyIsEnumerable进行测试来过滤for循环迭代的参数,仍在那里

---编辑---- 这是 index.js ,其中我定义了一个类 M2Page ,通过传递这个传递页面参数在 savePage 函数内部 M2PagePers.savePage(this);

function M2Page (page, perspage) {


    this.url= null;
    this.type= null;
    this.definition= null; // [sect1, sect2, ... ,sectN]
    this.nb_visiteurs= null;
    this.droits_acces= null;
    this.secu_params= null;
    this.content= null;
    this.apparence=null;

    // permet d'initialiser la page avec page_props dans le constructeur
    flow.exec(
        function(){
            console.log('running flow m fn 1..');
            if(page != null && page != undefined)               
                (function (for_in_loop_cb) {
                        for(var prop in page) {
                            console.log('inside for in : setting this page\'s  ' + prop + ' to ' + page[prop]);
                            this[prop] = page[prop];
                        };
                    for_in_loop_cb();
                })(this);   

        },function(){
            console.log('running flow m fn 2.. ');
            if(perspage) savePage();
        }
    );

    //fonctions de persistance
    function savePage () {
        M2PagePers.savePage(this);
    }; 

0 个答案:

没有答案