跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • JS 的函数和方法区别在哪里?
未分類
20 2 月 2021

JS 的函数和方法区别在哪里?

JS 的函数和方法区别在哪里?

資深大佬 : misakawaque 5

想花 3 天速览一下 js 所以用的菜鸟 看到函数的第三部分有点疑惑

百度的搜索结果看起来像乱码…….

大佬有話說 (36)

  • 資深大佬 : hkingstu

    没区别

  • 資深大佬 : renmu123

    我也觉得在 js 中方法和函数没什么区别,在别的语言中,函数就是 function,而方法( method )是在类中,js 中这两者分得没那么清楚。
    参考: https://stackoverflow.com/questions/155609/whats-the-difference-between-a-method-and-a-function
    参考: https://segmentfault.com/q/1010000000420497
    ps:学习编程千万不能用百度

  • 主 資深大佬 : misakawaque

    @hkingstu 菜鸟里有这么一句话:”在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。”
    这个怎么理解啊

  • 資深大佬 : smallyu

    区别就是函数和方法的区别

  • 主 資深大佬 : misakawaque

    @renmu123 那有没有什么比较快的速览 js 的教程或者方法啊
    面向对象和函数式都有基础所以想要简便的方法去学习

  • 資深大佬 : Austaras

    @misakawaque
    “`
    function foo() {
    console.log(this.a)
    }

    foo.call({ a: 123 })
    “`
    这个 call 就是函数的方法

  • 資深大佬 : across

    不太严谨的定义:

    js 里面没有类的概念,虽然 es6 加了 class,算是种语法糖。但 js 内置类型就有 Function,这个是 JS 语言意义上的 Function,该 Function 下可以有属性(包括 property 之类···)、有方法,原型可以访问,方法可以调用。

    当然,你看了会说,这 tmd 不是类和函数么?
    emm,设计思想不一样嘛,自动脑内转换下思路。

  • 資深大佬 : renmu123

    @misakawaque #5 菜鸟教程比较基础,可以简单过一遍熟悉一下 js 的风格,然后建议过一下 es6 的教程,可以看阮一峰的一本书,之后再想看就推荐 mozilla 的 mdn 文档了。其实大概过完 es6 教程就可以去实战,遇到不懂的地方再去看 mdn 就可以了

  • 資深大佬 : Kasumi20

    一个函数对象的属性有 length,比如((a, b) => {}).length 就等于 2,还有 bind(), apply()等方法

  • 資深大佬 : across

    @across
    中间打那段错字了,纠正

    Function 下可以有属性(包括 prototype 之类···),有方法。 属性可以访问,方法可以调用。

  • 資深大佬 : autoxbc

    方法是挂在实例对象上的函数,方法在调用时会被隐式转递实例对象作为 this 参数,这也是 this 的本质,就是隐参数

  • 資深大佬 : musi

    初学者的话可以看 MDN 文档一步一步来
    https://developer.mozilla.org/zh-CN/docs/learn
    MDN 文档算是比较权威的,所以看这里一般都没错(可能会有一些翻译不严谨问题,有能力可以直接看英文原版)
    比如你会看到这一章:
    https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Building_blocks/Functions#%E5%87%BD%E6%95%B0%E4%B8%8E%E6%96%B9%E6%B3%95

  • 資深大佬 : jinliming2

    函数和方法看你描述的是啥,他们可以是同一个东西。
    比如你写了 globalThis.foo = () => {}; 。那么 foo 就是被定义在全局环境下的一个函数,可以说 foo 是一个函数,也可以说 foo 是 globalThis 下的一个方法。foo() 就是调用 foo 这个“函数”,globalThis.foo() 就是调用 globalThis 下的 foo “方法”。
    虽然本质上没有区别。
    当你把它叫做“函数”的时候,一般是特指它自己本身;当你把它叫做“方法”的时候,一般特指它是属于某一个父级对象下的一个 function 类型的属性。

  • 資深大佬 : weixiangzhe

    function 和 method, 你把方式放在又个 object 的属性上 那这个函数就是 这个 object 的方法了

  • 資深大佬 : devwolf

    个人认同上所指出的,函数和方法是不同场景下的称谓,。<br/>
    可能有点歪,我也有过类似的 [称谓 /定义疑问] 而整了份 demo 文在 csdn 上(知道会有人 ptsd,我只是随便找个地方)<br/>
    “js 中函数的四种方法以及类的三种方法” https://blog.csdn.net/qq_35306736/article/details/109180252?spm=1001.2014.3001.5501
    <br/>
    函数 有内部方法、实例方法(对象方法)、原型方法、静态方法(类方法)<br/>
    类 有实例方法(对象方法)、原型方法、静态方法(类方法)。<br/>
    不过我也是东施效颦式的从调用方法上去区分种类,肯定不入流。而且这些五花八门的叫法,个人记忆中大多来自机构视频。<br/>

    ——更权威的定义使用当然在 mdn 里,我在本帖里晒出来自己混乱的 demo,也是希望有大佬可以再来点更站得住脚的解析

  • 資深大佬 : wanguorui123

    洋芋、马铃薯、土豆有什么区别

  • 資深大佬 : devwolf

    快,你想多快呀

  • 資深大佬 : yaphets666

    没区别.难道在其他语言里函数和方法有区别吗?

  • 資深大佬 : gdrk

    没区别啊,有其它语言基础的只要花点功夫理解 js 的原型链很快就能上手了。

  • 資深大佬 : marcong95

    @yaphets666 #18 Objective C 了解一下?

  • 資深大佬 : Hoshinokozo

    难道不是类或者对象内的成员函数就叫方法吗?

  • 資深大佬 : yaphets666

    @marcong95 和 js 是一样的 Objcet.a() 和 a()的区别的 本质上没啥区别 都是数学意义上的函数

  • 資深大佬 : jadeborner

    方法是指对象中的函数,可以用 this,全局的函数在严格模式下不能用 this

  • 資深大佬 : marcong95

    @yaphets666 #22 对 OC 的记忆有点模糊了,我指的是[object a]跟 object.a(),印象中好像是有点区别的。而且编程的函数一般都不是数学意义的函数把,数学意义上的函数只是一个映射而已,并没有副作用。

  • 資深大佬 : chonerlee

    我觉得主可以这样理解:同一个东西的两个名字,没有和任何对象关联的时候(调用:a())就叫函数,和任何对象有关联的时候(调用:obj.a())叫方法。

  • 資深大佬 : anjianshi

    我觉得函数和方法,就是“人”和“工人”的关系:
    – “方法”就是“函数”,当“函数”被放在某个类中时,我们会把它叫做“方法”,但其实它依然就是一个“函数”。
    – “工人”是“人”,但在“工厂”这个场景下,我们把“人”称为“工人”,但他依然就是一个“人”

  • 資深大佬 : ubbcou

    在《深入理解 es6 》第四章有这么以一句话:
    在 ES6 之前,“方法”的概念从未被正式定义,它此前仅指对象的函数属性(而非数据属
    性)。ES6 则正式做出了定义:方法是一个拥有 [[HomeObject]] 内部属性的函数,此内部
    属性指向该方法所属的对象。

  • 資深大佬 : mascteen

    @devwolf youtuber 这类视频很多,不过一般视频很长有几个小时

  • 資深大佬 : dk7952638

    严格来说,函数是不能有副作用的,而方法则不然

  • 資深大佬 : WishMeLz

    我的理解是:函数是 function,方法是 function 中有具体的业务代码逻辑。

  • 資深大佬 : IvanLi127

    函数+过程=方法。我印象中是这么个样子,然后就不太理解主为啥有这疑惑出,是不是有什么语言背景?

  • 資深大佬 : journalistFromHK

    js 万物皆对象 字符串、数字、函数都属于对象 而对象都有属性和方法,这些属性和方法也属于对象 没必要弄清对象和方法有什么区别 因为没意义

  • 資深大佬 : meteor957

    没区别

  • 資深大佬 : ayase252

    ECMA-262 定义:
    Function: member of the Object type that may be invoked as a subroutine
    Method: function that is the value of a property

    方法是作为一个属性的值的函数

  • 資深大佬 : libook

    个人认为方法是面向对象的一个子概念,一个对象的方法可以对这个对象进行操作或者进行一些和这个对象有关的操作。

    函数就是对输入进行处理然后输出结果的过程。

    举个例子,比如“下雨”;用方法来实现就是你需要先构造一个“雨”的 Class 或构造函数,然后在其原型上加一个“下”的方法;用函数的来实现就是构造一个通用的“下”函数,然后把“雨”作为参数传进去(当然你也可以传“雪”、“冰雹”、“馅饼”)。

    从 JS 内部原理来说,方法和函数主要区别在于 this,即过程执行的环境。某种程度来说,方法也是一种函数,只不过方法的运行通常是以对象数据为基础的,方法的 this 为对象本身。
    没有依赖于任何对象的,可以实现独立功能的函数,就是我们一般说的“函数”。

    函数式编程和面向对象编程是两种思想,JS 两种都支持(可能写法和其他语言不大一样),如何认定也取决于开发人员自己的规划。

  • 資深大佬 : codeDreamfy

    看你是如何使用的吧, 如果是挂载到某个对象的属性下,那就是方法,如果是独立使用那就是函数,不同场景叫法不同而已

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具