这是我的代码
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答案 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'));