zoukankan      html  css  js  c++  java
  • prototype & __proto__

    普通对象 vs 函数对象

      js中对象分为两类,普通对象、函数对象。当在终端打印时,普通对象与函数对象有极其明显的差异。

      一个不含杂七杂八的函数对象如下,这是第一种表现形式。:

        

      若往里面塞东西,则会显示成下面这样。这是第二种表现形式,特点是【】别扭地紧跟在{右侧。:

        

      一个普通对象有如下两种形式:

        

      普通对象无法通过()来调用,函数对象可以通过()来调用,这是重大区别。

    内置数据剖析

      js引擎内部有一个函数对象,这里称为BaseFunction,以及一个空对象,这里称为Root。

      BaseFunction的prototype为undefined,__proto__为Root。

      Root的prototype为undefined,__proto__为null。

      

      prototype在js的语义为本函数对象所创建类型的基类,__proto__的语义为本对象所属的类对象。

      BaseFunction、Root 是javascript一切内容的基石

      js内建类型中,Number、Array、Object、Function均由BaseFunction创建而得。

      其中Function函数对象的prototype、__proto__均指向BaseFunction。

      Object的prototype为Root,__proto__为Function,意为Object是一个Function,Root为所有普通对象的基类对象。

      

      

    prototype & __proto__】  

      这是两个完全不想着的变量。prototype指类型原型,__proto__是继承链。

      Constructor

        A method called at the moment an object is instantiated. It usually has the same name as the class containing it.  

      1)Function.prototype是一个函数对象,这里称为F1对象。此对象只能通过Function.prototype来引用。

      2)Function是一个函数对象,这里称为F2对象。其prototype、__proto__都指向F1对象。

      当使用Function来创建新函数时,如 function SayHello(){},会做以下几件事:

      1、创建一个SayHello函数对象,内置逻辑为上述逻辑。

      2、创建一个对象,此处称为SayHelloBase,用SayHello初始化。SayHelloBase作为所有SayHello对象的基类。

  • 相关阅读:
    ISEX安全期计算 V4.0 多国语言版女性安全期避孕计算实用工具软件
    FireARP防火墙 V3.1防局域网ARP攻击的软件
    asp.net页面字段绑定概述
    C# 删除、遍历指定目录下的所有指定文件、文件夹
    加入收藏、设为首页常用脚本
    分页加载数据Demo
    学习fragment的生命周期
    widget控件
    Menu菜单的代码和xml的创建
    WebView控件
  • 原文地址:https://www.cnblogs.com/tekkaman/p/5213899.html
Copyright © 2011-2022 走看看