我正在研究 Javascript 对象和原型,据我所知,定义构造函数的两种方式最终得到了相似的结果。
例如,在这段代码中,完全相同的构造函数以 2 种不同的方式定义,但它们最终具有不同的原型值:
var PersonOne = function () {};
function PersonTwo(){};
var p1 = new PersonOne();
var p2 = new PersonTwo();
console.log(p1.constructor.prototype);
console.log(p2.constructor.prototype);
结果:
Object {}
PersonTwo {}
显然我错了,像在 PersonOne 中那样定义构造函数会导致构造函数的原型是 Object。那会影响继承。但问题是,造成如此不同结果的原因是什么?
我认为问题可能是由于 PersonOne 函数是在运行时定义的,而 PersonTwo 是在解析时定义的?谢谢您的帮助。