相对于其他的编程语言,JavaScript可能是一个奇行种。其中我觉得最有必要提到的是JS中函数与方法的差异。

早期的JS中并没有真正意义上的方法的概念,所谓的方法只是用JS通过this对上下文做出特定的操作而实现的伪方法。

JavaScript方法(函数)中的this指向的并非是实例本身,准确的说应该是指向的是调用它的对象。

function whoami() {console.log(this);
}whoami(); // 返回的是当前作用域下的变量列表,类似Python中dir函数的输出

如果我们把whoami赋值到一个新的对象上会发什么呢?

obj = Object();
obj.whoami = whoami;
obj.whoami();

可能你已经猜到了,obj.whoami()输出的是obj作用域下的变量列表。由此可见原生的方法在JS里是并不存在的。

其实像这样的语言在动态语言里非常常见,例如Lua与JS就非常相似。反观其他的动态语言诸如Python则在类型中添加了一种名为“classobj”(Python3中会直接输出类名,因为在Python3中类已经被作为一种新类型了)的类型,这个类型中会包含类的方法,结构信息。

如果没有这个类型那么我们可能需要使用一种名为工厂函数的概念来批量进行实例化的操作。但是与原生类型对比工厂函数中可能会出现冗余代码的情况。关于工厂函数可以参考阮一峰老师的博客。

JavaScript中函数和方法区别相关推荐

  1. java中函数和方法区别_java中函数和方法的区别是什么?

    java中函数和方法的区别是什么? 面向对象的语言叫方法 面向过程的语言叫函数 在java中没有函数这么一说,只有方法一说.实际上方法就是函数,函数就是方法,只是在不同的语言不同的称呼而已. [推荐教 ...

  2. javascript中函数和方法的区别

    函数(function) 函数是一段代码,需要通过名字来进行调用.它能将一些数据(函数的参数)传递进去进行处理,然后返回一些数据(函数的返回值),也可以不返回数据. 方法(method)是通过对象调用 ...

  3. js中 函数和方法的区别:转载于黑泽君

    js中 函数和方法的区别 在javascript中的解释为: 函数(function)是可以执行的javascript代码块,由javascript程序定义或javascript实现预定义.函数可以带 ...

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  6. python函数与方法的区别_python中函数和方法有哪些区别

    python中函数和方法有哪些区别 发布时间:2020-11-16 09:30:04 来源:亿速云 阅读:89 作者:小新 小编给大家分享一下python中函数和方法有哪些区别,相信大部分人都还不怎么 ...

  7. JavaScript中函数的三种定义方法

    JavaScript中函数定义的三种方法. 函数的三种定义方法分别是:函数定义语句.函数直接量表达式和Function()构造函数的方法.下面依次介绍这几种方法具体怎么实现. 1. 函数定义语句 // ...

  8. python中的方法和函数的区别_Python中函数和方法的区别

    在Python中函数和方法是有区别的. 区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中. 区别二定义的方式: 1.函数定义的方式 def关键字  然后接函数名 再是 ...

  9. JavaScript中的部分函数/方法参考

    目录 1.Object.defineProperty方法 2.for.for...in.for...of.forEach方法 for循环(可使用return.break等来中断循环) forEach循 ...

最新文章

  1. 8-Qt6 智能指针QPointer
  2. matlab三维feather,matlab高维图形,别地方抄来的
  3. .NET6之MiniAPI(二十三):Refit
  4. 二维凸包 Graham's Scan
  5. 漫画:学习中台,看这篇就够了
  6. IOT(21)---:云、大数据、IOT深度融合 云计算进入3.0时代
  7. 30余种加密编码类型的密文特征分析
  8. 行为识别TSM训练ucf101数据集
  9. [1077]ZooKeeper下载安装(Windows版本)
  10. 百度云 下载提示 本地文件移动失败
  11. 鹏业安装算量软件功能按钮汇总(一)
  12. monkeyrunner之环境搭建及实例(三)
  13. win7自动锁定计算机快捷键,两种方法教你锁定Win7系统电脑计算机快捷键
  14. vscode中自动换行快捷键_VSCode Mac实用快捷键、插件
  15. sklearn模块之朴素贝叶斯:(二)伯努利模型的实现
  16. 零基础能掌握seo知识吗
  17. RF自动化测试框架(二)
  18. rust进水器怎么用_净水器的使用方法和注意事项
  19. 【SAP】ABAP——币种金额转换
  20. 网页代码扒ppt_用“扒片”的方法制作ppt

热门文章

  1. QT 登录界面 傻瓜化教学
  2. 前端三剑客:一文入门JavaScript
  3. 现在最好玩的AI竟然来自一个家谱公司???
  4. compose中的TextField
  5. UI之摇晃手机和触摸手势
  6. 网络分析之转弯要素(Turn Features)
  7. 没有shell63号单元_在ANSYS中选择合适的单元类型
  8. 云服务主要分为哪几类,云计算和IDC对比,有什么不同?
  9. VSCode crypto安装
  10. RecyclerView最后一条显示不全或显示部分的问题解决