JavaScript 상속-프로토 타입 상속

1. 프로토 타입 상속의 기원 :

Crockford는 상속을 구현하는 방법을 도입했습니다.이 방법은 엄격한 의미에서 생성자를 사용하지 않고 프로토 타입을 사용하여 사용자 정의 형식을 만들지 않고도 기존 개체를 기반으로 새 개체를 만듭니다.

주어진 기능은 다음과 같습니다.

    function Object(o){
//        临时性的构造函数
        function F() {}
        F.prototype = o;
        return new F();
    }

설명:

(1) 객체 함수 내에서 먼저 임시 생성자를 생성 한 다음 전달 된 객체를 생성자의 프로토 타입으로 사용합니다. (2) 마지막은이 임시 유형의 새 인스턴스를 반환합니다.

(3) 본질적으로 object ()는 전달 된 객체의 얕은 복사를 수행합니다.

2. 프로토 타입 상속 :

예는 다음과 같습니다.

    function Object(o){
//        临时性的构造函数
        function F() {}
        F.prototype = o;
        return new F();
    } 

    var person = {
         name:"萝卜头",
         friends:["1","2","3"]
     };

     var anotherPerson = Object(person);
     anotherPerson.name="大萝卜头";
     anotherPerson.friends.push("5");

     var anotherPerson2 = Object(person);
     anotherPerson2.name="萝卜干";
     anotherPerson2.friends.push("7");

     console.log(person.friends);

코드 설명 :

이 예제에서는 다른 개체의 기반으로 사용할 수있는 사람 개체가 Object 함수에 전달 된 다음 함수가 새 개체를 반환합니다. 이 새로운 객체는 사람을 프로토 타입으로 가지므로 프로토 타입에는 기본 유형 값 속성과 참조 유형 값 속성이 포함됩니다. person.friends는 사람의 소유 일뿐만 아니라 anotherPerson 및 anotherPerson2도 공유합니다.

참고 : 이러한 종류의 프로토 타입 상속을 위해서는 다른 객체의 기초로 사용할 수있는 객체가 있어야합니다 . 이러한 객체가 있으면 object () 함수에 전달한 다음 얻은 객체에 하나의 수정 사항을 추가 할 수 있습니다. 특정 요구에 따라.

3. 개선 :

ES5는 새로운 Object.create () 메서드를 통해 프로토 타입 상속 표준화합니다. 이 메서드는 새 개체의 프로토 타입으로 사용되는 개체와 새 개체의 추가 속성을 정의하는 개체의 두 매개 변수를받습니다.

    var person = {
        name:"萝卜头",
        friends:["1","2","3"]
    };

    var anotherPerson = Object.create(person,{
        name:{
            value:"大萝卜头"
        }
    });
    anotherPerson.friends.push("5");

    var anotherPerson2 = Object.create(person,{
        name:{
            value:"萝卜干"
        }
    });
    anotherPerson2.friends.push("7");

    console.log(person.friends);


 프로토 타입 상속은 한 개체를 다른 개체와 유사하게 만들고 싶을 때 좋은 선택입니다. 그러나 참조 유형 값을 포함하는 속성은 프로토 타입 패턴을 사용하는 것처럼 항상 원하는 값을 공유합니다.

참고 : 자세한 내용은 "JavaScript 고급 프로그래밍"을 참조하십시오.

추천

출처blog.csdn.net/weixin_43690348/article/details/113000121