在构造函数中设置的属性将覆盖原型上的属性
Property set in constructor overrides property on prototype
试图澄清一些原型继承基础。
function thirdSampleObject(){
this.first_var = 3;
this.update = function(){"Hi I am a function"};
}
var thirdClass = new thirdSampleObject();
var fourthClass = new thirdSampleObject();
thirdClass.first_var = 5;
fourthClass.first_var = 7;
console.log(thirdClass.first_var); //returns 5
console.log(fourthClass.first_var); //returns 7
thirdSampleObject.prototype.first_var = 10;
console.log(thirdClass.first_var); //returns 5 "protectected" within it's own instance of the object
console.log(fourthClass.first_var); //returns 7 "protectected" within it's own instance of the object
var fithClass = new thirdSampleObject();
console.log(fithClass.first_var); //returns 3 ? Wouldn't this return 10 at this point?`
我希望console.log(fithClass.first_var)
返回10,因为我覆盖了原型中的值。但是,返回"原始"原型定义中设置的数字。我在想为什么。
无论原型上的first_var
的值是什么,构造函数都会显式地在新创建的对象上设置该值。
this
指的是新对象,而不是原型。
如果对象不具有该属性,而该对象的原型具有该属性,则会发生原型继承。
function thirdSampleObject(){
this.first_var = 3;
this.update = function(){"Hi I am a function"};
}
thirdSampleObject.prototype.first_var = 10;
var fifthClass = new thirdSampleObject();
fifthClass.hasOwnProperty('first_var'); // returns true. i,e fifthClass object have its own property 'first_var'.
console.log(fifthClass.first_var);
delete fifthClass.first_var //here we are deleting the property from object.
fifthClass.hasOwnProperty('first_var'); // returns false
console.log(fifthClass.first_var); // returns 10
相关文章:
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 覆盖上下文.属性和函数
- CSS 属性在使用 innerHTML 时被覆盖
- 如何在更改的事件处理程序中忽略Polymer元素上默认属性的初始覆盖
- 角度:覆盖'@'链接或控制器中隔离作用域中的属性
- 正在覆盖Object.obsoe()中的属性
- (Javascript)覆盖对象内置或继承的属性
- 覆盖对象's的长度属性
- 扩展类时继承而不是覆盖属性/方法
- 为什么 Meteor 更新会覆盖我的文档中的现有属性
- 覆盖 Ember 2.x 核心组件中的“视图”级别属性
- 打字稿覆盖构造函数中的扩展属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性
- 我想克隆一个 javascript 类. 将方法添加到克隆的属性中,而不实际覆盖现有方法
- 为什么可以删除窗口的覆盖属性
- 检查全局属性/函数是否已在 JavaScript 中被覆盖
- 如何用html5数据属性覆盖jquery插件选项
- JQuery-显示/隐藏样式属性覆盖css
- Ember.js计算属性(覆盖get和set)
- style属性覆盖了用jquery分配的css属性