zoukankan      html  css  js  c++  java
  • (二)JavaScript之原型到原型链

    每个函数都有一个 prototype 属性;并且prototype是函数才会有的属性

    函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型;每一个对象都会从原型"继承"属性

    function Cat() {
    
    }
    Cat.prototype.name = '布丁';
    var cat1 = new Cat();
    var cat2 = new Cat();
    console.log(cat1.name) // 布丁
    console.log(cat2.name) // 布丁
    

    函数的prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是上面例子重中的cat1和cat2的原型;即Cat.prototype是原型。那么,实例化出来的对象与原型什么关系呢?
    每一个JavaScript对象(除了 null )都具有的一个属性,叫__proto__,这个属性会指向该对象的原型。即

    	cat1.__proto__ === Cat.prototype
    

    原型都有一个 constructor 属性指向关联的构造函数,即:

    	Cat === Cat.prototype.constructor
    

    当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。

    简而言之的总结:
    • Cat.prototype === cat1.__proto__ 	//该对象原型得出的相等关系
      
    • Cat === Cat.prototype.constructor		//方法等于原型的构造器
      
    • 读取实例的属性时会去去找原型的原型,一直找到最顶层为止;原型也是对象
      
    • Function.prototype 和 Object.prototype 是两个特殊的对象等于null,由引擎来创建
      
  • 相关阅读:
    poj3016
    BZOJ2560 串珠子
    HAOI 2009 逆序对数列
    BJOI2012 最多的方案
    ZJOI2008 生日聚会
    ZJOI2008 骑士
    SCOI2003 严格N元树
    SDOI2010 地精部落
    USACO Section 3.2 Stringsobits
    JLOI2013 卡牌游戏
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675345.html
Copyright © 2011-2022 走看看