当我用对象文字添加原型属性时,上游直接原型属性就会中断.为什么?
When I add prototype properties with an object literal then upstream direct protoype properties break. Why?
这似乎取决于原型声明的顺序。这是代码:
function Person(firstname){
this.firstname = firstname;
}
//Person.prototype.middlename = "Charles"; //this line doesn't work here
Person.prototype = {
constructor: Person,
lastname: "Claus"
}
Person.prototype.middlename = "Charles"; //this line works here
var person1 = new Person("Santa");
console.log(person1.firstname, person1.middlename, person1.lastname);
这里有一个链接:https://jsfiddle.net/tdz0yrs2/
这类语句:
Person.prototype = {
// ...
};
将构造函数的prototype属性重置为一个全新的对象。在此点之前设置的任何属性都将保留在旧原型对象上,但不会出现在新构建的对象中。
这里的关键是,像这样的对象文字赋值不会添加属性—它创造了一个全新的对象。
Pointy也这么说。
您需要在不覆盖整个对象的情况下将新功能添加到原型中:
Person.prototype.someFunction = function() { ... };
或者使用下划线的extend
之类的东西将新属性混合到现有原型中:
_.extend(Person.prototype, {
// ...
});
相关文章:
- 附加到原型属性的Do函数没有闭包
- 日期原型属性
- JS构造函数的原型属性与其原型之间的区别
- 为什么函数对象的实例没有继承函数原型属性
- 为什么浏览器显示原型属性不同
- 为什么在Function.prototype上没有原型属性
- 函数的原型属性
- 原型继承和原型属性
- 在JavaScript中,函数的默认值是多少'的原型属性
- Chrome 不支持 Javascript 中的原型属性吗?
- 我应该在JavaScript中将什么连接到子原型属性
- 更新 JavaScript 中的原型属性
- 请解释有关 JavaScript 中的原型属性和函数构造函数的详细信息
- 为什么原型函数无法读取原型属性
- 与对象属性同名的原型属性
- 如何获取原型属性列表
- 构造函数中的方法与函数的原型属性之间的差异
- JavaScript 原型属性
- 函数对象__proto__和原型属性
- 未在自定义 OL3 控件的构造函数中定义的原型属性