【问题标题】:Meteor adds _proto_ to arrayMeteor 将 _proto_ 添加到数组
【发布时间】:2015-02-07 02:40:15
【问题描述】:

我在 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();

流星代码:

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
    });
}

【问题讨论】:

    标签: javascript arrays meteor


    【解决方案1】:

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

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

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

    【讨论】:

    • 但是为什么它只显示 Meteor 而不是常规代码?
    • @mesosteros 只要您在现代网络浏览器下查看它,只要它的 javascript 就会存在。 Meteor 没有添加它,ES6 pre-final javascript 规范添加了它。它仅在调试器下可见。如果您甚至在使用xxx.__proto__ 的调试器之外调用它,您将能够看到它的属性。
    • @mesosteros 请查看 javascript 问题,提出相同的问题,例如:stackoverflow.com/questions/8665446/…
    • @mesosteros 我没有看到 Meteor 和您提供的 javascript 代码之间有任何区别,您是否使用不同的方式来查看它们?
    • 该死的我忘记了我的代码和我真正想问的问题......这就是为什么 proto 被添加到我的数组中,无论是否是 Meteor。您的回答清除了这一点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2023-04-05
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2012-02-15
    相关资源
    最近更新 更多