2013-03-09 2 views
2
var MyClass = function() {};  

    MyClass.method = function (name, age) { 
     return "My name is " + name + " and I'm " + age + " years old";   
    } 

    MyClass.prototype.method = function (name, age) { 
     return "My name is " + name + " and I'm " + age + " years old"; 
    } 

    console.log(MyClass.method('David','30')); 

    var instance = new MyClass();  

    console.log(instance.method('john', '23')); 

위의 코드 스 니펫에서 두 메소드 모두 동일한 작업을 수행하고 있습니다. 대부분의 경우 둘 다 서로 바꿔서 사용할 수 있습니다. 어느 것이 당신이 선택한 이유는 무엇입니까?객체 메소드와 프로토 타입 메소드

답변

3

프로토 타입 방법은 모든 인스턴스간에 공유되므로 개체를 더 밝게 만듭니다.

+0

비 프로토 타입 방법을 사용해야하는 이유가 있습니까? –

+0

인스턴스마다 특정 메서드를 사용하고 싶지 않고 'new'를 사용하여 개체를 선언하면 이유가 없습니다. –

+0

항상 가능한 한 생성자/프로토 타입을 사용하십시오. 더 효율적입니다. 사실입니까? –

0

이것은 C# 또는 Java의 정적 멤버 vs 인스턴스 멤버와 같습니다. 비 프로토 타입은 예를 들어 객체 내의 매개 변수에 액세스 할 수 없습니다.

당신은 당신이 MyClass에에 MyClass에의 인스턴스를하지 호출하고 있기 때문에, 예를 들어 MyClass.method 내에서이 작업을 수행 할 수 없습니다. (jsFiddle)

var MyClass = function(name, age) { 
    this.name = name; 
    this.age = age; 
}; 

MyClass.prototype.method = function() { 
    return "My name is " + this.name + " and I'm " + this.age + " years old"; 
} 

var instance = new MyClass('David', 10); 
console.log(instance.method()); 
관련 문제