对象javascript没有内置函数hasOwnProperty

时间:2015-10-01 03:27:02

标签: javascript express

这是我的代码

console.log(typeof res.locals);
console.log(res.locals.hasOwnProperty('a'));

我的结果:

object
Unhandled rejection TypeError: res.locals.hasOwnProperty is not a function

注1:res是Express by Express;

我使用Express 4.13.3。任何人都知道这里有什么问题吗?

注意:

  var a = Object.create(null);
  var b = {};
  a.hasOwnProperty('test');
  b.hasOwnProperty('test');

我在这里发现bug.Object.create(null)不要使用buildin函数

制作Object javascript

1 个答案:

答案 0 :(得分:1)

res.locals is defined in Express作为没有原型的对象:

res.locals = res.locals || Object.create(null);

通过传递null,该对象不会继承任何属性或方法,包括Object.prototype上的hasOwnProperty上的属性或方法。

console.log(Object.getPrototypeOf(res.locals)); // null

console.log(Object.create(null) instanceof Object); // false

要将此方法与res.locals一起使用,您必须通过Object.prototype访问它:

console.log(Object.prototype.hasOwnProperty.call(res.locals, 'a'));

// or store it
var hasOwnProperty = Object.prototype.hasOwnProperty;
console.log(hasOwnProperty.call(res.locals, 'a'));