Atitit paip.对象方法的实现原理与本质.txt

对象方法是如何实现的1

数组,对象,字典1

对象方法是如何实现的

这显然是一个对象方法调用。但对象方法是如何实现的呢?在静态语言中,因为有编译过程,所以我们把一个结构放在内存里,并使得它

- 拥有一个对象实例指针指向obj,

- 拥有一个对象方法指针指向aMethod()在代码区的地址,

- 在有效代码的前后加入处理x,y,z这些参数的代码(例如入栈与清栈)。

在执行时,我们将obj与aMethod交给执行系统,并传入指定参数(的序列),然后就可以按照既已编译的规则来执行了

数组,对象,字典

是的,对象和函数可以象数组一样,用属性名或方法名作为下标来访问并处理。那么,它到底应该算是数组呢,还是算对象?

我们知道,数组应该算是线性数据结构,线性数据结构一般有一定的规律,适合进行统一的批量迭代操作等,有点像波。而对象是离散数据结构,适合描述分散的和个性化的东西,有点像粒子。因此,我们也可以这样问:JavaScript里的对象到底是波还是粒子?

如果存在对象量子论,那么答案一定是:波粒二象性!

因此,JavaScript里的函数和对象既有对象的特征也有数组的特征。这里的数组被称为“字典”,一种可以任意伸缩的名称值对儿的集合。其实, object和function的内部实现就是一个字典结构,但这种字典结构却通过严谨而精巧的语法表现出了丰富的外观。正如量子力学在一些地方用粒子来解释和处理问题,而在另一些地方却用波来解释和处理问题。你也可以在需要的时候,自由选择用对象还是数组来解释和处理问题。只要善于把握JavaScript的这些奇妙特性,就可以编写出很多简洁而强大的代码来。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

Atiend

Atitit paip.对象方法的实现原理与本质.txt相关推荐

  1. 链式调用方法的实现原理和方法

    1.什么是链式调用? Person person = new Person().setName(fog).setAge(18).setSex(man).setJob(software engineer ...

  2. jQuery 中 data 方法的实现原理

    jQuery 中 data 方法的实现原理 前言:jQuery 作为前端使用最多最广泛的 JS 库,其源码每个 JSer 都应该研究一下.早就打算看却一直被各种事拖着,上次某公司面试时被问到 jQue ...

  3. scala 函数方法、函数方法的实现原理

    文章目录 1. 函数&方法 2. 函数&方法的实现原理 1. 函数&方法   scala中方法是类的一部分,而函数是一个对象,可以赋值给一个变量.scala 中的方法跟 Jav ...

  4. sort排序方法的实现原理

    sort 排序方法的实现原理   我们比较常用的是直接调用 JS的 sort方法,围绕原生 JS方法,并结合 V8排序的代码一起来分析,以便碰到类似的 JS排序问题时能够轻松应对.   在开始前请思考 ...

  5. JavaScript内置一些方法的实现原理--new关键字,call/apply/bind方法--前戏

    new关键字,call/apply/bind方法都和this的绑定有关,在学习之前,首先要理解this. 一起来学习一下this吧 首先.this是一个对象. 对象很好理解,引用类型值,可以实现如th ...

  6. SAP Spartacus CurrentProductService.getProduct方法的实现原理

    注入CurrentProductService: 看看这个currentProductService又包含哪些属性: scope为undefined: 如果从routeState里能提取到produc ...

  7. vue实例方法之set方法的实现原理

    大概流程就是: 1,开发环境target 没定义或者是基础类型报错 2,如果是数组,就用splice()重写数组 3,如果是对象本身的属性,则直接添加 判断目标值是否为响应式的 4,如果是vue实例, ...

  8. matlab中二维插值中cubic方法的实现原理(个人见解)

    通过查找matlab的帮助程序,对离散数据格网化采用的方法有如下5种: griddata(..., METHOD) where METHOD is one of         'nearest'   ...

  9. vue源码解析:vue生命周期方法$destory方法的实现原理

    我们知道vue生命周期的最后一个阶段是销毁阶段,那么vue会调用自己的destory函数,那么$destory函数的实现原理是什么?且往下看. 用法: vm.$destroy() 作用: 完全销毁一个 ...

  10. js中flat方法的实现原理

    Array.prototype.flat(),将多维数组降维 let arr = [1, [2, 3, [4, 5, [12, 3, "zs"], 7, [8, 9, [10, 1 ...

最新文章

  1. 亚信安全中标民生银行防病毒项目 为“互联网+金融”革新防护能力
  2. C/C++常见报错问题描述及解决方案
  3. SAP fiori上直接连接到操作系统层面 然后进行相关操作的需求
  4. 祝贺 在线文件管理系统 访问量 超过500
  5. 中南大学 oracle试卷,数据库原理期末复习(中南大学)数据库原理、技术及应用2.ppt...
  6. utc转换成时间 mysql_在select语句中将Datetime列从UTC转换为本地时间
  7. python循环小练习
  8. java2实用教程第四版pdf下载_Java 2实用教程(第4版)
  9. 三星识别文字_Samsung OCR Software三星光学字符识别软件下载_Samsung OCR Software三星光学字符识别软件官方下载-太平洋下载中心...
  10. 2018西安邮电大学计算机学院,西安邮电大学计算机学院
  11. 2014年互联网IT公司产品、技术类人员工资待遇汇总 2015部分补充
  12. 1024-开启人工智能学习之旅
  13. ext2.2全选反选修复
  14. 优化Windows xp Professional大全
  15. x264编码参数详细介绍
  16. python之torchlight使用_关于深度学习、NLP和计算机视觉的30个顶级Python库
  17. 中医(专长)医师证书国家卫计委15号令和卫生部52号令有什么区别
  18. JDBC连接数据库详细步骤
  19. 配置阿里云域名的证书
  20. Linux常用基本命令( touch )

热门文章

  1. win10运行在哪里_原来win10还有LTSC版:10G大小+不强制更新,运行比win7更快!
  2. html5 2.5d,修仙三国:首款HTML5三国背景2.5D角色扮演页游
  3. Base64编码解码(一)——介绍
  4. Inno Setup for Windows service
  5. Ubuntu 12.04下Proftpd FTP服务器配置
  6. Educational Codeforces Round 61
  7. jQuery.qrcode 生成二维码,并使用 jszip、FileSaver 下载 zip 压缩包至本地。
  8. hdu 2680 Choose the best route【dijstra+反向建图】
  9. struts2中struts.xml配置文件详解
  10. 让ListView中的控件失去焦点:android:descendantFocusability=blocksDescendants