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

2021-03-01 21:54:22 +08:00
 misakawaque

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

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

3953 次点击
所在节点    JavaScript
36 条回复
hkingstu
2021-03-01 22:07:28 +08:00
没区别
renmu123
2021-03-01 22:10:51 +08:00
我也觉得在 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
2021-03-01 22:10:54 +08:00
@hkingstu 菜鸟里有这么一句话:"在 JavaScript 中, 函数是对象。JavaScript 函数有它的属性和方法。"
这个怎么理解啊
smallyu
2021-03-01 22:10:58 +08:00
区别就是函数和方法的区别
misakawaque
2021-03-01 22:12:46 +08:00
@renmu123 那有没有什么比较快的速览 js 的教程或者方法啊
面向对象和函数式都有基础所以想要简便的方法去学习
Austaras
2021-03-01 22:12:47 +08:00
@misakawaque
```
function foo() {
console.log(this.a)
}

foo.call({ a: 123 })
```
这个 call 就是函数的方法
across
2021-03-01 22:17:39 +08:00
不太严谨的定义:

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

当然,你看了会说,这 tmd 不是类和函数么?
emm,设计思想不一样嘛,自动脑内转换下思路。
renmu123
2021-03-01 22:18:19 +08:00
@misakawaque #5 菜鸟教程比较基础,可以简单过一遍熟悉一下 js 的风格,然后建议过一下 es6 的教程,可以看阮一峰的一本书,之后再想看就推荐 mozilla 的 mdn 文档了。其实大概过完 es6 教程就可以去实战,遇到不懂的地方再去看 mdn 就可以了
Kasumi20
2021-03-01 22:18:24 +08:00
一个函数对象的属性有 length,比如((a, b) => {}).length 就等于 2,还有 bind(), apply()等方法
across
2021-03-01 22:19:55 +08:00
@across
中间打那段错字了,纠正

Function 下可以有属性(包括 prototype 之类···),有方法。 属性可以访问,方法可以调用。
autoxbc
2021-03-01 22:20:37 +08:00
方法是挂在实例对象上的函数,方法在调用时会被隐式转递实例对象作为 this 参数,这也是 this 的本质,就是隐参数
musi
2021-03-01 22:57:54 +08:00
初学者的话可以看 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
2021-03-02 00:29:54 +08:00
函数和方法看你描述的是啥,他们可以是同一个东西。
比如你写了 globalThis.foo = () => {}; 。那么 foo 就是被定义在全局环境下的一个函数,可以说 foo 是一个函数,也可以说 foo 是 globalThis 下的一个方法。foo() 就是调用 foo 这个“函数”,globalThis.foo() 就是调用 globalThis 下的 foo “方法”。
虽然本质上没有区别。
当你把它叫做“函数”的时候,一般是特指它自己本身;当你把它叫做“方法”的时候,一般特指它是属于某一个父级对象下的一个 function 类型的属性。
weixiangzhe
2021-03-02 00:56:32 +08:00
function 和 method, 你把方式放在又个 object 的属性上 那这个函数就是 这个 object 的方法了
devwolf
2021-03-02 08:30:52 +08:00
个人认同楼上所指出的,函数和方法是不同场景下的称谓,。<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
2021-03-02 08:39:07 +08:00
洋芋、马铃薯、土豆有什么区别
devwolf
2021-03-02 08:43:37 +08:00
快,你想多快呀😂(为啥想花 3 天时间速览,js 的水也没那么浅吧。不过要用到框架的话,就跟着框架使用到的高频知识点为方向去查?)

个人认为的花费时间 :阮一峰 es6 标准入门 < 菜鸟教程 js < JavaScript 高级程序设计 < MDN 。
你想更快点,那就机构视频 /慕课网这些网课视频了
yaphets666
2021-03-02 09:11:52 +08:00
没区别.难道在其他语言里函数和方法有区别吗?
gdrk
2021-03-02 09:33:24 +08:00
没区别啊,有其它语言基础的只要花点功夫理解 js 的原型链很快就能上手了。
marcong95
2021-03-02 09:56:05 +08:00
@yaphets666 #18 Objective C 了解一下?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/757452

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX