오늘날 많은 사람들이 JS 객체를 사용하여 JSP를 학습 한 후 코드를 구현하지만 JavaScript에서는 JS 객체가 동적 언어입니다. 방금 시작하는 많은 친구들이 JavaScript의 객체 지향 쓰기 방법이 무엇인지 궁금 할 것입니까? 차이점은 무엇입니까? 이제 JavaScript 객체 지향 작성 방법과 차이점을 설명하겠습니다.
JS에는 일반적으로 OOP를 구현하는 두 가지 방법이 있습니다.
첫 번째 :이 키워드를 사용하십시오
함수 class1 ()
{
this.onclick = function (e)
{
for (var i = 0; i <1000; i ++)
{
var a = 새 날짜 ();
}
}
}
이것을 사용합니다. 방법은 객체를 유연하게 객체에 추가 할 수 있으며 대부분의 OOP 언어와 유사하며 작동 중에 추가 할 수도 있습니다.
두 번째 유형 : 프로토 타입 키워드를 사용하십시오
함수 clickfunc (e)
{
for (var i = 0; i <1000; i ++)
{
var a = 새 날짜 ();
}
}
함수 class2 ()
{
}
class2.prototype.onclick = clickfunc;
사용 측면에서, 유연한 것처럼 보이는 첫 번째 것은 없습니다. 그러나 객체가 새로운 것이기 전에 언제든지 물체의 속성과 방법을 추가 할 수도 있습니다.
그러나 그들은 평등하지 않습니다. 비교적 말하면, 첫 번째 방법은 비교적 집중되어 있고 코드를 읽기 쉽기 때문에 첫 번째 방법을 선호합니다. 그러나 달리면 운영 효율성이 크게 다릅니다. 아래 테스트 코드를 살펴 보겠습니다.
var total = new Array ();
기능 test1 ()
{
var a = 새 날짜 ();
for (var i = 0; i <10000; i ++)
{
var c = 새로운 class1 ();
//total.push(c);
}
var b = 새 날짜 ();
알림 (b.gettime () -A.GetTime ());
}
기능 test2 ()
{
var a = 새 날짜 ();
for (var i = 0; i <10000; i ++)
{
var c = 새로운 class2 ();
//total.push(c);
}
var b = 새 날짜 ();
알림 (b.gettime () -A.GetTime ());
}
첫 번째 단계는 실행 시간을 테스트하는 것입니다. test1 ()는 142ms가 걸리는 반면 test2 ()는 50ms 만 필요합니다. 시간 효율성 측면에서 프로토 타입 방법은 이것보다 더 효율적입니다.
JavaScript 객체의 두 번째 단계는 메모리 사용을 테스트하고 Total.push (c)에 대한 주석을 제거하는 것입니다. 총 .push (c); 만들어지지 않은 객체가 생성 될 때 많은 개체가있을 때 GC가되는 것을 방지하기 위해 배열에 추가되도록합니다. 결과적으로, 그 차이가 크지 않은 것으로 밝혀졌습니다. 첫 번째 방법은 20 ~ 30m의 메모리를 차지했지만 두 번째 방법은 백 K를 필요로했습니다.
JavaScript 객체를 만듭니다
원인 추론 :
이 두 코드를 처리 할 때 첫 번째 유형은 JS Parser로 각 객체에 대해 별도의 메소드를 생성하여 메모리 오버 헤드를 증가시키고 메소드를 생성 할 때 실행 시간을 증가시킵니다. 두 번째 유형은 대부분의 OOP 컴파일러와 마찬가지로 JS 파서가 객체의 데이터 세그먼트와 메소드 세그먼트를 별도로 저장한다는 것입니다. 객체의 개인 데이터의 경우 객체 당 하나의 사본과 이러한 방법이 공개 메소드 세그먼트에 배치되므로 실행 시간 및 메모리 오버 헤드를 줄일 수 있습니다.
위의 내용은 객체 지향 쓰기 방법의 차이점과 JavaScript의 차이점을 설명하기위한 Fo Xin의 편집자입니다. 더 깊이 알고 싶다면 Fo Xin Technology 채널로 이동하여 이해할 수 있습니다.