最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 类的继承

    正文概述 掘金(小白菜_白又白)   2021-01-25   512

    prototype 属性和__proto__属性

    class F {
    }
    
    class C extends F {
    }
    
    C.__proto__ === F // true
    C.prototype.__proto__ === F.prototype // true
    
    1. 子类的__proto__属性,表示构造函数的继承,总是指向父类。
    2. 子类prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype属性。

    理解:

    作为一个对象,子类的原型是父类; 即:C.__proto__ === F 
    作为一个构造函数,子类的原型对象是父类的原型对象的实例。即:C.prototype.__proto__ === F.prototype
    

    那么到底什么是prototype,什么是__proto__?

    __ proto __

    Every JavaScript object has a second JavaScript object (or null ,
    but this is rare) associated with it. This second object is known as a prototype,
    and the first object inherits properties from the prototype.
    

    即:每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法。

    对象__proto__属性的值就是它所对应的原型对象。 类的继承

    var one = {x: 1};
    one.__proto__ === Object.prototype // true ES规范定义对象字面量的原型就是Object.prototype
    
    var two = new Object();
    two.__proto__ === Object.prototype //往下阅读
    

    那么prototype又是什么呢?

    prototype

    只有函数才有prototype属性

    当你创建函数时,JS会为这个函数自动添加prototype属性,值是一个有 constructor 属性的对象。

    类的继承

    而一旦你把这个函数当作构造函数(constructor)调用(即通过new关键字调用),那么JS就会帮你创建该构造函数的实例,实例继承构造函数prototype的所有属性和方法(实例通过设置自己的__proto__指向承构造函数的prototype来实现这种继承)。 类的继承

    类的继承

    function a() {} //构造函数a可以通过prototype来存储要共享的属性和方法
    var b = new a(); //b是实例对象
    b.__proto__ === a.prototype; //对象通过__proto__指向自己的构造函数的prototype
    

    补充

    JS是单继承的,Object.prototype是原型链的顶端,所有对象从它继承了包括toString等等方法和属性。

    参考链接: wangdoc.com/es6/class-e… github.com/creeperyang…


    起源地下载网 » 类的继承

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元