나는 JS를 사용하여 자기의 객체 지향 방법을 작성하고 있습니다. 다음과 같이 방법을 정의하는 문제가 발생했습니다.
코드 사본은 다음과 같습니다.
함수 listcommon2 (첫 번째, 두 번째, 셋째)
{
this.first = function ()
{
Alert ( "First Do"+First);
}
}
ListCommon2.DO1 = 함수 (첫 번째)
{
// this.first ();
Alert ( "First Do"+First);
}
listcommon2.prototype.do2 = 함수 (첫 번째)
{
// this.first ();
Alert ( "First Do"+First);
}
두 방법의 차이점은 무엇입니까? 프로토 타입 사용 기능은 무엇입니까?
테스트 코드 :
코드 사본은 다음과 같습니다.
var t1 = 새로운 ListCommon2 ( "끓는 물 1", "Brew Tea 1", "음료 1");
// t1.do1 (); // 호출시 오류가 발생했습니다
ListCommon2.DO1 ( "끓인 물 1");
var t2 = 새로운 ListCommon2 ( "끓는 물 2", "차 2", "음료 2");
t2.do2 ( "끓는 물 2"); //
// ListCommon2.DO2 ( "Boiling Water 1"); // 통화에서 오류가 발생했습니다
테스트 후, 프로토 타입을 사용하지 않는 방법은 클래스의 정적 메소드와 동일하므로, 이런 식으로 호출 될 수 있습니다. ListCommon2.do1 ( "Boiling Water 1");,이 방법으로 호출되면 오류가 발생합니다. T1.do1 ();
반대로, 프로토 타입을 사용하는 방법은 클래스의 인스턴스 방법과 동일하며 새로운 후에는 사용할 수 없습니다. listcommon2.do2 ( "끓는 물 1"); 오류가 발생합니다.
결론 : 프로토 타입을 사용하여 정의 된 방법은 클래스의 인스턴스 방법과 동일하며 새 후 사용해야합니다. 함수에서 호출 될 수있는 함수의 한계는 클래스의 인스턴스 방법의 한계와 유사합니다.
프로토 타입을 사용하지 않고 정의 된 방법을 사용하는 것은 클래스의 정적 메소드와 동일합니다. 새롭지 않고 직접 사용할 수 있습니다. 함수에서 호출 할 수있는 함수의 제한은 클래스의 정적 방법의 한계와 유사합니다.
예를 들어, this.first ()를 호출 할 수 없습니다.