문제

할 수 있는 누군가를 제공의 간단한 설명 방법기능 에서 웁니다.

도움이 되었습니까?

해결책

기능 이름으로 호출되는 코드입니다. 데이터를 전달하여 작동 할 수 있으며 (예 : 매개 변수) 선택적으로 데이터를 반환 할 수 있습니다 (리턴 값). 함수로 전달 된 모든 데이터가 명시 적으로 통과됩니다.

방법 객체와 관련된 이름으로 호출되는 코드입니다. 대부분의 경우 두 가지 주요 차이점을 제외하고는 기능과 동일합니다.

  1. 메소드는 호출 된 객체를 암시 적으로 전달합니다.
  2. 메소드는 클래스 내에 포함 된 데이터에서 작동 할 수 있습니다 (객체는 클래스의 인스턴스임을 기억합니다. 클래스는 정의이고 객체는 해당 데이터의 인스턴스입니다).

(이것은 문제를 무시하는 단순화 된 설명입니다. 범위 등.)

다른 팁

메소드는 객체에 있습니다.
함수는 객체와 무관합니다.

Java의 경우 방법 만 있습니다.
C의 경우 기능 만 있습니다.

C ++의 경우 수업에 있는지 여부에 따라 다릅니다.

'방법' 객체 지향적 인 단어입니다 '기능'. 그것은 거의 모든 것이 있습니다 (예 : 실제 차이는 없습니다).

불행히도, 나는 여기의 많은 답변이 복잡하고 의미있는 차이가 있다는 생각을 영속 시키거나 발전시키고 있다고 생각합니다.

실제로 - 그다지 많지는 않습니다.

늦은 추가


사실, AS 브라이언 닐 의견으로 지적했다 이 질문, C ++ 표준은 멤버 함수를 참조 할 때 '메소드'라는 용어를 사용하지 않습니다. 어떤 사람들은 C ++가 실제로 객체 지향 언어가 아니라는 것을 나타내는 것으로 여길 수 있습니다. 그러나 나는 그것을 꽤 똑똑한 사람들의 사람들이 다른 용어를 사용해야 할 특히 강한 이유가 있다고 생각하지 않았다는 징후로 받아들이는 것을 선호합니다.

일반적으로 : 메소드는 클래스에 속하는 함수이며, 함수는 코드의 다른 범위에있을 수 있으므로 모든 메소드가 함수이지만 모든 기능이 메소드가 아닙니다.

다음 파이썬 예를 들어보십시오.

class Door:
  def open(self):
    print 'hello stranger'

def knock_door:
  a_door = Door()
  Door.open(a_door)

knock_door()

주어진 예제는 "Open"이라는 메소드 또는 동작이있는 "도어"라는 클래스를 보여줍니다.이를 클래스 내부에서 선언했기 때문에 메소드라고합니다. 함수를 정의하는 "def"가있는 코드의 또 다른 부분이 있으며, 클래스 내부에서 선언되지 않기 때문에 함수입니다. 그 자체로 호출됩니다.

보시다시피, 당신은 어디서나 함수를 호출 할 수 있지만 메소드를 호출하려면 클래스와 동일한 유형의 새 개체를 전달해야합니다. 적어도 파이썬에서 객체 (Object.Method ()) 내부의 메소드.

방법을 하나의 엔티티 만 할 수있는 일로 생각하므로 개 클래스가 있다면 해당 클래스 내에서만 껍질 기능을 갖는 것이 합리적이며 방법이 될 것입니다. 인간과 개가 공급 될 수 있기 때문에 어떤 클래스에도 속하지 않기 때문에 "피드"기능을 작성하고 특히 클래스에 속하지 않기 때문에 그 기능을 호출 할 수 있습니다.

A 사이의 주요 차이에 대한 매우 일반적인 정의 기능 그리고 a 방법:

함수는 클래스 외부에서 정의되며 방법은 클래스 내부 및 일부 내부에서 정의됩니다.

기억하는 간단한 방법 :

  • 에프unction → 에프Ree (무료는 물체 나 클래스에 속하지 않는 것을 의미합니다)
  • athod → Ember (물체 또는 클래스의 구성원)

가능 여기"내가 소개하는 OO 방법"

아이디어 뒤에 객체 지향적 패러다임"threat"소프트웨어로 구성되어 있습니다.잘 만들 수 있습니다.체에서 실제로 존재하는 세상 속성에 대한 인스턴스가 있는 경우에는 직원의 직원 이름,직원 id,위치,그리고 부서 등입니다.etc.

또한 객체는 처리하는 방법을 알고 그 특성과 일부 작업을 수행들입니다.게 말하면 우리가 무엇을 알고 싶 직원을 하고 있는 지금 우리가 그에게 묻는다.

employe whatAreYouDoing.

는"whatAreYouDoing"는"메시지"를 보내는 개체입니다.체하는 방법을 알고 대답을 하는 질문,그것은 그것에는"방법"를 해결하는 문제입니다.

그래서,방법 개체 노출의 행동이라는 방법이 있습니다.방법에 따라서는 아티팩트 객체가""뭔가.

다른 방법은 가능

employee whatIsYourName
employee whatIsYourDepartmentsName

etc.

함수에서 다른 손으로는 방법으로 프로그래밍 언어가를 계산하는 몇 가지 예를 들어 있을 수 있습 기능 addValues(8,8)반환하는 16

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

이후 첫 번째 인기 있는 프로그래밍 언어(예:fortran,c,파스칼)를 다루지 않 OO 패러다임,그들은 단지 전화를 이 아티팩트"기능".

예를 들면 이 함수에서 C 이 될 것이다:

int addValues( int x, int y ) 
{
   return x + y;
}

그것은"자연적인"을 말하는 개체는"기능"몇 가지 작업을 수행하기 때문에 기능을 더 관련하여 수학적 재료는 동안 직원은 약간의 수학에서 그것을 가지고,하지만 당신은 할 수 있는 방법은 정확히 동일한 작업을 수행하는 기능으로,예를 들어 자바에서 이에 해당하는 것 addValues 기능입니다.

public static int addValues( int x, int y ) {
    return x + y;
}

익숙하지?Thats 기 때문에 자바의 뿌리에서는 C++과 C++C.

끝에서는 단지 개념,구현에 그들이 동일 보일 수 있지만,OO 문서 이러한 방법이라고합니다.

Heres 예전의 직원 개체에서 Java.

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
        return this.name;
    }
    public String whatsYourDeparmentsName(){
         return this.department.name();
    }
    public String whatAreYouDoing(){
        return "nothing";
    } 
    // Ignore the following, only set here for completness
    public Employee( String name ) {
        this.name = name;
    }

}

// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Output:
Employee John is doing nothing.

의 차이 다음에서"도메인이"그것은 어디이 적용됩니다.

애플의 아이디어가"자연의 언어"matphor,는 어떤 시점에서 OO 했다.예를 들어 Smalltalk.나는 그것을 희망이 될 수 있 합리적인 당신을 위해 쉽게 이해하는 방법 개체에 이것을 읽은 후.

참고:코드를 컴파일하지 않을 다만으로 봉사하는 예입니다.료를 게시물을 수정 및 추가하는 파이썬은 예입니다.

Oo World에서는 두 사람이 일반적으로 같은 것을 의미하는 데 사용됩니다.

순수한 수학 및 CS 관점에서, 함수는 동일한 인수 (f (x, y) = (x + y))로 호출 될 때 항상 동일한 결과를 반환합니다. 반면에 방법은 일반적으로 클래스 인스턴스와 관련이 있습니다. 다시 말하지만, 대부분의 현대 OO 언어는 더 이상 "기능"이라는 용어를 사용하지 않습니다. 많은 정적 방법은 일반적으로 상태가 없기 때문에 함수와 매우 유사 할 수 있습니다 (항상 사실은 아닙니다).

함수가 코드 블록 (일반적으로 자체 범위, 때로는 자체 폐쇄)이라고 가정 해 봅시다.

메소드는 객체가 소유하는 함수입니다 (일부 객체 지향 시스템에서는 클래스가 소유하고 있다고 말하는 것이 더 정확합니다). 객체/클래스에 의해 "소유"되는 것은 객체/클래스를 통해 메소드를 참조한다는 것을 의미합니다. 예를 들어, Java에서 "Open ()" "Object"객체 "도어"를 호출하려면 "도로 ()를 써야합니다.

일반적으로 메소드는 또한 객체/클래스 내에서 동작을 설명하는 몇 가지 추가 속성을 얻습니다. 예 : 가시성 (객체 지향 개념의 캡슐화 개념과 관련하여 메소드가 흡수 될 수있는 객체 (또는 클래스)를 정의합니다.

많은 객체 지향 언어에서 모든 "기능"은 일부 객체 (또는 클래스)에 속하므로이 언어에는 메소드가 아닌 기능이 없습니다.

방법은 클래스의 기능입니다. 정상적인 전문 용어에서 사람들은 방법을 교환하고 기능합니다. 기본적으로 당신은 그것들을 동일한 것으로 생각할 수 있습니다 (글로벌 함수를 메소드라고하는지 확실하지 않음).

http://en.wikipedia.org/wiki/method_(computer_science)

함수는 수학적 개념입니다. 예를 들어:

f(x,y) = sin(x) + cos(y)

FUNTER F ()는 두 번째 매개 변수의 코사인에 추가 된 첫 번째 매개 변수의 죄를 반환 할 것이라고 말합니다. 그것은 단지 수학입니다. 그것이 일어나기 때문에 sin ()와 cos ()도 함수입니다. 함수에는 다른 속성이 있습니다. 동일한 매개 변수가있는 함수에 대한 모든 호출은 동일한 결과를 반환해야합니다.

반면에, 방법은 객체 지향 언어의 객체와 관련된 함수입니다. 그것은 하나의 암시 적 매개 변수를 가지고 있습니다 : 객체가 작동 중입니다 (그리고 상태).

따라서 메소드 g (x)가있는 객체 z가 있으면 다음이 표시 될 수 있습니다.

Z.g(x) = sin(x) + cos(Z.y)

이 경우, 매개 변수 x가 전달 된 기능 예제와 동일하게 전달됩니다. 그러나 cos ()에 대한 매개 변수는 객체 z. z 내부에 사는 값이며 내부에 사는 데이터 (zy)는 z의 g () 메소드에 대한 암시 적 매개 변수입니다.

함수 또는 메소드는 일부 작업을 수행하고 선택적으로 값을 반환하는 이름의 호출 가능한 코드입니다.

~ 안에 언어 함수라는 용어가 사용됩니다. 자바 & 씨# 사람들은 그것을 방법이라고 말할 것입니다 (이 경우 함수는 클래스/객체 내에서 정의됩니다).

C ++ 프로그래머는이를 기능 또는 때로는 방법이라고 부를 수 있습니다 (절차 스타일 C ++ 코드를 작성하는 경우에 따라 C ++의 객체 지향 방식을 수행하는 경우 C/C ++ Only 프로그래머는 용어 '방법'이 덜 자주이므로 기능이라고 할 수 있습니다. C/C ++ 문헌에 사용).

이름을 부르면 함수를 사용합니다.

result = mySum(num1, num2);


먼저 객체를 참조하여 메소드를 호출합니다.

result = MyCalc.mySum(num1,num2);

역사적으로, "방법"이 가치를 반환하지 않는 것, 그리고 "함수"와 함께 미묘한 차이가 있었을 수도 있고, 언어는 그 자체로 제공됩니다. 용어의 어휘 특별한 의미로.

~ 안에 "씨", 단어 "기능" 수단 프로그램 루틴.

~ 안에 자바, 용어 "기능" 특별한 의미가 없습니다. 반면 "방법" 클래스 구현을 형성하는 루틴 중 하나를 의미합니다.

~ 안에 씨# 그것은 다음과 같이 번역됩니다.

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

그러나 실제로, 나는 두 가지 개념에 실제로 차이가 없다고 다시 말합니다. Java에 대한 비공식 토론에서 "기능"이라는 용어를 사용하는 경우 사람들은 "방법"을 의미하고 계속합니다. Java에 대한 적절한 문서 나 프레젠테이션에 사용하지 마십시오. 그렇지 않으면 어리석은 것처럼 보일 것입니다.

클래스의 메소드는 객체라고 불리는 클래스의 인스턴스에 관한 행위입니다.

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}

에 OO 언어 같은 개체는 파스칼 또는 C++에서는"방법"은 기능과 관련된 개체입니다.그래서 예를 들어,"Dog"객체가 있을 수 있습"껍질에 있는"기능 및 이 것으로 간주하는"방법".반면에,"StrLen"기능 독립(이 제공하는 문자열의 길이로 제공됩 argument).따라서 그것은 는"기능이 있습니다." Javascript 기술적으로 객체 지향뿐만 아니지만 많은 한계와 비교하여 본격적인 언어는 C++,C#거나 파스칼.그럼에도 불구하고,차이 여전히 개최한다.

의 몇 가지 추가 정보:C#은 완전히 객체 지향하도록 만들 수 없습니다 독립"기능이 있다." C#에서의 모든 기능이 개체에 따라서,기술적으로,"방법입니다." 키커는 몇 사람 C#에서 참조하는"방법"-그들은 그냥 사용하는 용어"기능"이 없기 때문에 실제 어떤 차이를 만들 수 있습니다.

마지막으로-그래서 그냥 모든 파스칼은 전문가가지 않아 이동에 나를 여기에-파스칼은 또한 구별하"기능"(반환하는 값)와"절"이는 하지 않습니다.C#없이 명시적으로 구분할 수는 있지만,물론,선택하는 값을 반환 또는하지 않습니다.

Python을 언급 한 이후로, 다음은 대부분의 현대적인 객체 지향 언어에서 방법과 객체 간의 관계를 유용한 그림 일 수 있습니다. 간단히 말해서 그들이 "메소드"라고 부르는 것은 단지 추가 논쟁을 통과하는 함수 일 뿐이지 만 (다른 답변이 지적했듯이) Python은 대부분의 언어보다 더 명백하게 만듭니다.

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")

이제 기능을 비교하십시오 greet_with_greeter 그리고 방법 greet: 유일한 차이점은 첫 번째 매개 변수의 이름입니다. 그래서 나는 그것을 사용할 수 있습니다 greet 내가 사용하는 것과 정확히 같은 방법 greet_with_greeter 함수 (클래스 내부에서 정의했기 때문에 "dot"구문을 사용하여 얻을 수 있습니다) :

Greeter.greet(hello_greeter, "World")

그래서 나는 메소드를 함수로 효과적으로 바꿨습니다. 함수를 메소드로 바꿀 수 있습니까? Python이 정의 된 후 클래스를 엉망으로 만들 수 있으므로 시도해 봅시다.

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

예, 기능 greet_with_greeter 이제 방법으로도 알려져 있습니다 greet2. 이것은 메소드와 함수 사이의 유일한 차이점을 보여줍니다. object.method(args), 언어는 마술처럼 그것을 바꿉니다 method(object, args).

(OO 순수 주의자들은 방법이 함수와 다른 것이라고 주장 할 수 있으며, 고급 파이썬이나 루비 또는 SmallTalk에 들어가면 그들의 요점을보기 시작할 것입니다. 또한 일부 언어는 메소드가 객체의 비트에 특별한 액세스를 제공합니다. 주요 개념적 차이는 여전히 숨겨진 추가 매개 변수입니다.)

함수는 데이터를 조작하는 데 사용할 수있는 일련의 논리입니다.

반면, 메소드는 객체가 속한 객체의 데이터를 조작하는 데 사용되는 함수입니다. 따라서 기술적으로, 수업과 완전히 관련이 없지만 클래스에서 선언 된 기능이 있다면 방법이 아닙니다. 그것은 나쁜 디자인이라고합니다.

나를 위해 : 메소드와 함수의 함수는 동의하면 동일합니다.

  • 함수는 값을 반환 할 수 있습니다
  • 매개 변수를 기대할 수 있습니다

어떤 코드도 마찬가지로 객체가 들어있을 수 있으며 결과적으로 오는 객체가있을 수 있습니다. 그렇게하는 동안 그들은 물체의 상태를 바꿀 수 있지만 그것은 나에게 기본 기능을 바꾸지 않을 것입니다.

객체 또는 기타 코드의 호출 기능에 정의가 차이가있을 수 있습니다. 그러나 그것이 언어 적 차이가 아닌 사람들이 사람들이 그들을 교환하는 이유는 무엇입니까? 내가 조심할 계산의 언급 예. 계산을하기 위해 고용을 고용하기 때문에 다음과 같습니다.

new Employer().calculateSum( 8, 8 );

그렇게함으로써 나는 계산에 책임이있는 고용주에게 의존 할 수 있습니다. 그가 더 많은 돈을 원한다면 나는 그를 해방시키고 카르 베이지 수집가의 사용하지 않는 직원을 처분하는 기능이 나머지를 수행하고 새로운 직원을 얻게했다.

메소드가 객체 함수이며 함수가 연결되지 않은 계산이라고 주장하더라도 도움이되지 않습니다. 함수 설명자 자체와 이상적으로는 기능의 문서가 필요한 것이 무엇인지, 무엇이 필요로하는지 알려줍니다. 나머지는 일부 물체의 상태를 조작하는 것과 같이 실제로는 투명하지 않습니다. 나는 기능과 방법이 그들이 어떻게하는지 자세히 알 필요없이 그들이 주장하는 것을 전달하고 조작 할 것으로 기대합니다. 순수한 계산 기능조차도 콘솔의 상태를 변경하거나 로그 파일로 추가 할 수 있습니다.

내 이해에서 방법은 수업에서 수행 할 수있는 작업이 있습니다. 프로그래밍에 사용되는 일반적인 용어입니다.

많은 언어에서 방법은 기능과 서브 루틴으로 표시됩니다. 대부분의 언어가 이들에 사용하는 주요 차이점은 함수가 값을 발신자에게 반환 할 수 있고 서브 루틴은 그렇지 않을 수 있다는 것입니다. 그러나 많은 현대 언어에는 기능 만 있지만 선택적으로 값을 반환 할 수는 없습니다.

예를 들어, 고양이를 묘사하고 싶다고 가정 해 봅시다. 당신은 하품 방법으로 고양이 클래스를 만들 것입니다.

첫 번째 순서 근사치에, 메소드 (C ++ 스타일 OO)는 멤버 함수의 또 다른 단어, 즉 클래스의 일부인 함수입니다.

C/C ++와 같은 언어에서는 클래스의 구성원이 아닌 기능을 가질 수 있습니다. 클래스 A 메소드와 관련이없는 함수를 호출하지 않습니다.

IMHO 사람들은 객체 내부의 기능을 언급하고 싶을 때 프로그래머 간의 더 쉬운 의사 소통을 위해 새로운 단어를 발명하기를 원했습니다.

방법을 말하는 경우 수업 내에서 기능을 의미합니다. 당신이 함수를 말하고 있다면 당신은 단순히 클래스 밖에서 기능을 의미합니다.

진실은 두 단어가 기능을 설명하는 데 사용된다는 것입니다. 당신이 잘못 사용하더라도 잘못된 일이 발생하지 않습니다. 두 단어 모두 코드에서 달성하고자하는 것을 잘 설명합니다.

함수는 역할을 수행 해야하는 코드입니다 (기능) 무언가를하는 것. 방법은 방법 문제를 해결합니다.

그것은 같은 일을합니다. 그것은 같은 것입니다. 당신이 매우 정확하고 컨벤션과 함께 가고 싶다면 객체 내부의 함수로 메소드를 호출 할 수 있습니다.

기능은 주로 속한 개념입니다 절차 지향 프로그래밍 함수가 데이터를 처리하고 가치를 반환 할 수있는 엔티티 인 경우

방법은 개념입니다 객체 지향 프로그래밍 여기서 방법은 수업 구성원에서 대부분 처리하는 클래스의 구성원입니다.

매우 간단한 대답이 무엇인지 과도하게 복잡하게하지 마십시오. 방법과 기능은 동일합니다. 클래스 외부에있을 때 함수를 함수라고 부르며 클래스 내부에 쓰여질 때 기능을 메소드라고합니다.

나는 전문가가 아니지만 이것이 내가 아는 것입니다.

  1. 함수는 C 언어 용어이며 코드 한 장을 의미하며 함수 이름은이 기능을 사용하는 식별자입니다.

  2. 메소드는 OO 용어이며 일반적으로 함수 매개 변수 에이 포인터가 있습니다. C와 같은이 코드를 호출 할 수 없으므로 개체를 사용하여 호출해야합니다.

  3. 호출 방법도 다릅니다. 여기서이 코드의 주소를 찾기 위해 의미를 호출하십시오. C/C ++, 연결 시간은 함수 기호를 사용하여 찾습니다.

  4. objecive-c는 다릅니다. 데이터 구조를 사용하여 주소를 찾기 위해 C 함수를 의미합니다. 그것은 모든 것이 런타임에 알려져 있음을 의미합니다.

나는 다른 많은 사람들이 이미 대답 한 것을 알고 있지만 다음은 간단하지만 효과적인 단일 라인 답변이라는 것을 알았습니다. 여기에서 다른 답변보다 훨씬 나아 보이지는 않지만 신중하게 읽으면 메소드 대 기능에 대해 알아야 할 모든 것이 있습니다.

메소드는 정의 된 수신기를 갖는 함수이며, OOP 용어로 메소드는 객체 인스턴스의 함수입니다.

방법과 기능의 차이

독서에서 이 문서 Microsoft에서

실행 가능한 코드를 포함하는 멤버는 집합 적으로 클래스의 기능 구성원으로 알려져 있습니다. 앞의 섹션에서는 주요 기능 구성원 인 방법을 설명합니다. 이 섹션에서는 C#이 지원하는 다른 종류의 기능 구성원에 대해 설명합니다 : 생성자, 속성, 인덱서, 이벤트, 연산자 및 최종화기.

따라서 메소드는 함수의 하위 집합입니다. 모든 메소드는 함수이지만 모든 함수는 메소드가 아닙니다. 예를 들어 constructor a라고 말할 수 없습니다 방법 그러나 그것은 기능입니다.

다음은 JavaScript 예제를 사용한 메소드 대 함수에 대한 설명입니다.

test(20, 50); 기능 정의 및 어딘가에 저장/사용할 수있는 무언가를 되 돌리는 데 사용하는 기능 정의 및 사용됩니다.

코드를 재사용 할 수 있습니다 : 코드를 한 번 정의하고 여러 번 사용하십시오.

다른 인수로 동일한 코드를 여러 번 사용하여 다른 결과를 생성 할 수 있습니다.

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); 여기에서 test ()는 내장 된 개체에 대한 프로토 타입을 일부 객체 또는 사용자 지정 정의의 방법 일 수 있습니다. 여기에 자세한 설명이 있습니다.

JavaScript 방법은 객체에서 수행 할 수있는 동작입니다.

JavaScript 메소드는 함수 정의를 포함하는 속성입니다.

JavaScript의 문자열에 대한 내장 속성/방법 :

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

사용자 정의 예 :

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

예를 들어 문자열, 배열 등의 속성을 정의 할 수 있습니다.

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

일부 참조 : JavaScript 객체 방법, 기능, 프로토 타입에 대한 자세한 정보

함수 - 일부 논리와 독립적 인 코드의 함수 독립적으로 호출해야합니다 수업 밖에서 정의됩니다.

메소드 - 메소드는 독립 코드입니다. 일부 객체와 관련하여 호출되며 클래스 내부에서 정의됩니다.

C ++에서 때때로 방법은 클래스의 멤버 함수 개념을 반영하는 데 사용됩니다. 그러나 최근에는 586 페이지의 "파생 된 클래스"에서«The C ++ 프로그래밍 언어 4 판»책에서 성명서를 찾았습니다.

가상 함수를 때로는 메소드라고합니다.

이것은 조금 혼란 스럽지만 그는 말했다 때때로, C ++ Creator는 대상에서 함수가 호출 될 수 있고 다형성을 행동 할 수 있기 때문에 방법을 보는 경향이 있습니다.

클래스는 생성자와 함께 선택적으로 일부 데이터 및 기능을 모은 것입니다.

특정 클래스의 인스턴스 (복사, 복제)를 작성하는 동안 생성자는 클래스를 초기화하고 객체를 반환합니다.

이제 클래스는 객체 (생성자없이)가되고 함수는 객체 컨텍스트에서 메소드로 알려져 있습니다.

그래서 기본적으로

클래스 <== new ==> 객체

함수 <== new ==> 메소드

Java에서는 일반적으로 생성자 이름이 클래스 이름과 동일하지만 생성자가 인스턴스 블록 및 정적 블록과 같지만 사용자가 리턴 유형 (IE 클래스 유형)을 정의하는 것으로 알려져 있습니다.

클래스는 정적 블록, 인스턴스 블록, 생성자, 기능을 가질 수 있지만 객체에는 일반적으로 데이터 및 메소드 만 갖습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top