Meteor将_proto_添加到数组中

Meteor adds _proto_ to array

本文关键字:数组 proto Meteor 添加      更新时间:2023-09-26

Meteor中的数组出现问题,Meteor向数组对象添加了proto字段,尽管我只添加了对象。我已经在Meteor之外测试过了,我的阵列只有我通过的字段。

正常(非Meteor)代码:

function coisa() {
    var a = [];
    b = [];
    function test() {
        c = [];
        a.push(1, 2, 3);
        b.push(4, 5, 6);
        c.push(7, 8, 9);
    }
    function loggerA() {
        return a;
    }
    function loggerB() {
        return b;
    }
    function loggerC() {
        return c;
    }
    test();
    console.log(loggerA());
    console.log(loggerB());
    console.log(loggerC());
}
coisa();

Meteor代码:

if (Meteor.isClient) {
    Template.hello.rendered = function () {
        var a = [];
        b = [];
        function test() {
            c = [];
            a.push(1, 2, 3);
            b.push(4, 5, 6);
            c.push(7, 8, 9);
        }
        function logger() {
            console.log(a);
            console.log(b);
            console.log(c);
        }
/*        function loggerA() {
            return a;
        }
        function loggerB() {
            return b;
        }
        function loggerC() {
            return c;
        }
        */
        test();
        logger();
//        console.log(loggerA());
//        console.log(loggerB());
//        console.log(loggerC());
    }
}
if (Meteor.isServer) {
    Meteor.startup(function () {
        // code to run on server at startup
    });
}

这没什么错,它是ECMA6javascript规范的一部分,就像在现代web浏览器中一样。任何javascript对象都有一个__proto__对象,它允许您放置在更改数组时可以继承的属性。

您可以在此处阅读更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto

这不应该以任何方式影响你的应用程序,当你循环浏览对象时,它通常被忽略/不可见,除非你明确地调用它。__被添加到它的开头,因此它的侵入性最小。