首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使JSON解析对象原型在Javascript中减少?

如何使JSON解析对象原型在Javascript中减少?
EN

Stack Overflow用户
提问于 2017-07-05 09:24:59
回答 3查看 1.9K关注 0票数 2

我有一个没有原型的JavaScript对象。

代码语言:javascript
复制
var foo = Object.create(null);

然后,我读取了一个JSON文件(在Node.js中),并使用JSON.parse()将其分配给foo。如下所示:

代码语言:javascript
复制
fs.readFile('talks.json', 'utf8', function(err, text) {
  if (err) {
    throw error;
  }
  foo = JSON.parse(text);
});

但是,当我检查foo的原型时,它不再是最初打算成为的null了。

有什么方法可以让foo的原型再一次消失吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-15 10:20:47

JSON.parse()方法接受回调,该回调可用于将对象转换为无原型对象。

代码语言:javascript
复制
JSON.parse(string, function(k, v) {
   if (v && typeof v === 'object' && !Array.isArray(v)) {
     return Object.assign(Object.create(null), v);
   }
   return v;
});

https://esdiscuss.org/topic/proposal-add-an-option-to-omit-prototype-of-objects-created-by-json-parse

票数 3
EN

Stack Overflow用户

发布于 2018-05-09 17:23:16

我也遇到了同样的问题,我找到的解决方案是使用Object.assign()

代码语言:javascript
复制
var prototypeLessTalks = Object.create(null);
var talksParsed = JSON.parse(readFileContent('./talks.json', 'utf8'));

Object.assign(prototypeLessTalks, talksParsed); // here

function readFileContent(fileName, encoding) {
  return fs.readFileSync(fileName, encoding, (err, data) => {
    if (err) throw err;
    return data.toString();
  });
}

Object.assign()不覆盖目标对象已经存在的属性。

票数 1
EN

Stack Overflow用户

发布于 2017-07-05 09:40:21

我不能百分之百地肯定这一点,但我认为这里的问题是javascript必须指定一个原型。如果使用.prototype检查原型,则值为undefined。如果您使用.__proto__检查,它是一个空白对象。

这是有意义的,因为即使没有定义,原型也不应该是空的。程序员不应该使用.__proto__。如果您必须检查原型,请使用.prototype

代码语言:javascript
复制
var foo = Object.create(null);
console.log(foo); //{}
console.log(foo.__proto__); //undefined
console.log(foo.prototype); //undefined

var foo = JSON.parse("{\"a\":\"bla\"}");
console.log(foo); //like in the JSON string
console.log(foo.__proto__); //{}
console.log(foo.prototype); //undefined

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44922153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档