对象instanceof对象是false,为什么?

时间:2015-05-06 03:18:42

标签: javascript node.js express instanceof

在节点

上的快递中

var query = request.query;
打印下面query的信息:
console result

添加

mac上的

query instanceof Object为真 但在CentOS release 6.4 (Final)上:是假的(下面的图片)

再次添加:
节点:0.12.2
表达:3.4.4
操作系统:CentOS release 6.4(Final)

1 个答案:

答案 0 :(得分:1)

此代码在Express 3和Express 4中都显示true

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send(req.query instanceof Object);
});

var server = app.listen(3000, function () {

  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);

});

因此,这似乎不是Express中普遍存在(或至少不普遍存在)的问题。

我能想到的最有可能的事情就是代码中的某个地方(或者你正在使用的库/中间件),query.__proto__被设置为看起来像对象但却不是。也许类似的东西?:

var query = {};
query.__proto__ = null;
query.__proto__ = '{}';
console.log(query.__proto__); // {}
console.log(typeof query); // object
console.log(query instanceof Object); // false