我遇到Meteor中的数组问题,Meteor正在向数组对象添加 proto 字段,尽管我只添加了对象。 我在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
});
}
答案 0 :(得分:1)
这没有任何问题,它是ECMA 6 javascript规范的一部分,因为它是在现代网络浏览器中找到的。任何javascript对象都有一个__proto__
对象,允许您放置在更改数组时可以继承的属性。
您可以在此处详细了解:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto
这不应该以任何方式影响您的应用,当您循环浏览对象时,它通常会被忽略/不可见,除非您明确地调用它。 __
被添加到它的开头,因此它是最小的侵入性。