有人能简单解释OOP环境中的方法与函数吗?
当前回答
TL;博士
函数是一段要运行的代码。方法是对象内的函数。
函数示例:
function sum(){
console.log("sum")l
}
方法示例:
const obj = {
a:1,
b:2,
sum(){
}
}
所以这就是为什么我们说函数中的“this”关键字不是很有用,除非我们将其与call、apply或bind一起使用。。因为call、apply、bind将作为对象内部的方法调用该函数==>基本上它将函数转换为方法
其他回答
我不是专家,但我知道:
函数是C语言术语,它指的是一段代码,函数名将是使用此函数的标识符。方法是OO术语,通常它在函数参数中有一个this指针。您不能像C那样调用这段代码,您需要使用对象来调用它。调用方法也不同。这里调用含义来查找这段代码的地址。C/C++,链接时间将使用函数符号来定位。目标-C不同。调用表示使用数据结构查找地址的C函数。这意味着在运行时一切都是已知的。
函数是一个数学概念。例如:
f(x,y) = sin(x) + cos(y)
表示函数f()将返回第一个参数的sin加上第二个参数的余弦。这只是数学。碰巧sin()和cos()也是函数。函数有另一个属性:对具有相同参数的函数的所有调用都应返回相同的结果。
另一方面,方法是与面向对象语言中的对象相关的函数。它有一个隐式参数:被作用的对象(及其状态)。
因此,如果对象Z具有方法g(x),则可能会看到以下内容:
Z.g(x) = sin(x) + cos(Z.y)
在这种情况下,传入参数x,与前面的函数示例相同。然而,cos()的参数是位于对象Z内部的值。Z和位于对象Z内的数据(Z.y)是Z的g()方法的隐式参数。
函数是一组可以用来处理数据的逻辑。
而Method是一个用于处理其所属对象的数据的函数。因此,从技术上讲,如果您有一个与您的类不完全相关但在类中声明的函数,那么它不是一个方法;这被称为糟糕的设计。
根据我的理解,方法是可以在类上执行的任何操作。它是编程中使用的通用术语。
在许多语言中,方法由函数和子程序表示。大多数语言用于这些的主要区别是,函数可能会返回一个值给调用者,而子程序可能不会。然而,许多现代语言只有函数,但这些函数可以选择不返回任何值。
例如,假设你想描述一只猫,你希望它能够打哈欠。您将使用Yawn方法创建一个Cat类,这很可能是一个没有任何返回值的函数。
IMHO的人只是想发明一个新词,当他们想引用对象内部的函数时,可以更方便地在程序员之间进行交流。
如果你说的是方法,你指的是类内的函数。如果你说的是函数,那么你的意思只是类之外的函数。
事实上,这两个词都用来描述函数。即使你用错了,也不会发生任何错误。这两个词都很好地描述了您希望在代码中实现的目标。
函数是一个代码,它必须扮演一个做某事的角色(一个函数)。方法是解决问题的方法。
它也做同样的事情。这是同样的事情。如果你想超精确并遵循惯例,你可以调用方法作为对象内部的函数。