我很好奇这里发生了什么。如您所见,我定义了一个构造函数,调用range
它来构建新range
对象。我已经range
通过它的原型扩展了构造函数,添加了一个简单的includes
方法。我已经创建了我的新对象并使用了p
. 当我尝试将此方法用于我的range
对象时,一切都很好,并且可以按预期工作。问题是当我尝试查看p.prototype
它时告诉我它的类型是未定义的并且p.prototype
没有方法......嗯??
这里发生了什么??p
一个对象如何,p.prototype
又不是?
function range(from, to) {
this.from = from;
this.to = to;
}
range.prototype = {
includes: function(x) { return this.from <= x && x <= this.to; },
}
var p = new range(1, 4);
console.log(typeof p) //outputs object
console.log(typeof p.prototype) //outputs undefined
console.log(Object.getOwnPropertyNames(range.prototype)); //outputs includes
console.log(Object.getOwnPropertyNames(p.prototype)); //throws error, p.prototype is not an object