zoukankan      html  css  js  c++  java
  • 面试题常考&必考之--js中的难点!!!原型链,原型(__proto__),原型对象(prototype)结合例子更易懂

    1》首先,我们先将函数对象认识清楚:

     

    补充snow的另一种写法:

    var snow =function(){};

      

    2》其次:就是原型对象

    每当我们定义一个函数对象的时候,这个对象中就会包含一些内置的属性,其中有一个属性叫prototype(原型对象)

    原型对象不是谁都有的,是函数对象特有的 ,普通对象没有。但是普通对象有一个__proto__属性(叫原型)

    所有对象都有__proto__属性(原型)。

     

    总结:函数对象有原型对象(prototype)属性和原型对象中的原型(__proto__)属性。

    函数对象中的原型对象是普通对象也就是函数对象的原型对象是有原型属性的)

       普通对象只有原型(__proto__)属性。

    所有的对象都有一个原型(__proto__)属性。

     

    特例:Function.paototype依然是函数对象,不是普通对象。(特殊特殊,单独记!!!)

    但是这个函数对象里面就没有prototype属性了(也就是函数对象的原型对象没有原型对象了)

    验证:console.log(typeof(Function.prototype))//function

    console.log(typeof(Function.prototype.prototype))//undefine

    3》原型继承实例

    4》那么啥是原型链呢?

    上面提到,所有的对象都有一个属性叫做原型(__proto__)。----------------------------(在上面总结出绿色的文字处)

    那么这个原型属性是干么的呢?是用于指向创建它的函数对象的原型对象(是不是一脸懵!!!)

    仔细看实例:

    图A:

     那么,people的原型去找谁呢?

    图B:

     结合图A和图B我们画出的原型链的图为:

    5》原型链的定义总结:

          a.    在js中对象分为普通对象和函数对象,那么函数对象是通过New Function()创建的对象。除了函数对象都是普通对象。

          b.    所有对象中都有原型。但是函数对象中有原型对象(prototype),这是函数对象所特有的,函数对象的原型对象中有原型。普通对象中有原型。

          c.    所有对象都有原型属性,原型属性是用来指向创建它的函数对象的原型对象的。

  • 相关阅读:
    WeGame 上线,打造一个wegame游戏的良性游戏圈子
    H5 视频作为背景 source src改变后 循环播放的问题笔记
    windows无法安装到这个磁盘具有mbr分区表
    jquery的扩展:编写好代码封装起来供他人使用
    获取 HTML data-*属性的值( 文章列表页面,存储文章id 为读取详细页面
    max(min)-device-width和max(min)-width的区别
    git 红色标出没明白
    git-flow 的工作流程
    会计服务平台 使用条款
    若依:设置跨域配置位置和图片中框出代码
  • 原文地址:https://www.cnblogs.com/snowbxb/p/11556171.html
Copyright © 2011-2022 走看看