javascript 本地属性、继承属性、原型链

  1. Javascript 具有本地属性(own property),也有一些属性是从原型对象继承而来的,称为继承属性
    function Obj() {
          
          
    	this.x = 10;		// 本地属性 own property
    }
    Obj.prototype.x = 0;	// 继承属性
    Obj.prototype.y = 1;	// 继承属性
    
    let o = new Obj();
    console.log(o)
    
    打印结果如下:
    在这里插入图片描述
  2. 原型链
    假设要查询对象o的属性y, 如果本地属性中不存在y, 那么会继续在o的原型对象中查找属性y。如果原型对象中也没有y,但这个原型对象也有原型,那么继续在这个原型对象的原型上执行查询,直到没找到y或者查找到一个原型是null的对象为止。 对象的原型属性构成了一个“链”。 通过这个“链”可以实现属性的继承。
    • 原型链上查找继承属性 console.log(o.y) // 1
    • 本地属性会屏蔽同名继承属性console.log(o.x) // 10
    • 新增基本数据类型的属性时,若与继承属性同名,会自动创建一个与继承属性无关的新本地属性 o.y = 20; console.log(Obj.prototype.y) // 1
    • 若继承属性为引用数据类型,修改其值会影响到原型上的属性
    Obj.prototype.list = [1,2,3];
    o.list[0] = 0;
    console.log(Obj.prototype.list); // [0, 2, 3]
    
  3. 属性检测的三种方法
  4. 属性遍历的三种方法

如何更好地理解Javascript对象的自有属性和原型继承属性

猜你喜欢

转载自blog.csdn.net/SJ1551/article/details/109275513