我有一个关于定义原型属性的问题。为了不用在每个属性前面写"MyClass.prototype.",有些人会创建新对象来替换原本的对象。
就像这样:
就像这样:
var MyClass = function() {}
MyClass.prototype = {
sayHi : function() {
alert('hi');
}
}
但是如果这样做,当您尝试从任何实例访问构造函数时可能会导致问题。
var o1 = new MyClass();
alert( o1 instanceof MyClass ); // true
alert( o1.constructor === MyClass ); // false !!!
o1.constructor
通常会指向MyClass,但由于原型被更改,它不再这样。
我通过MyClass.prototype.constructor = MyClass;
解决了这个问题,并且现在可以正常工作。
问题是,更改原型可能导致什么其他问题?
你如何定义你的原型属性?