js 노트 34의 원형 체인 모드 확장 (1)

2114 단어

원형 체인 모드 확장


원형의 공유 속성 대량 설정
function Fn(){
    this.x = 100;
}
Fn.prototype.getX = function(){
};
Fn.prototype.getY = function(){
};
Fn.prototype.getZ = function(){
};
var f1 = new Fn;
  • 별명을 지어라
  • function Fn(){
        this.x = 100;
    }
    var pro = Fn.prototype; 
    //  pro, 
    pro.getX = function(){
    };
    pro.getY = function(){
    };
    pro.getZ = function(){
    };
    var f1 = new Fn;
    
  • 원형 대상을 재구성하는 방식 -> 스스로 메모리를 새로 열어 우리가 공유하는 속성과 방법을 저장하고 브라우저를 원래 Fn에게 줍니다.프로토타입이 개척한 것을 교체하세요
  • function Fn(){
        this.x = 100;
    }
    Fn.prototype = {
        constructor: Fn, //  constructor
        x: function(){
            
        },
        y: function(){
            
        }
    };
    var f1 = new Fn;
    f.a();
    f.b();
    
    //1.  Fn.prototype  constructor,
    //  , constructor Fn Object 
    
    //  ,  constructor 
    
    console.log(f.constructor) // -> ( ) Object
    

    a. 브라우저만 Fn에게 태어난다.prototype가 개척한 메모리 더미에constructor가 있습니다. 우리가 개척한 메모리 더미에는 이 속성이 없습니다. 이렇게 하면constructor가 가리키는 것은 Fn이 아니라 Object입니다. 원래와 일치하기 위해서constructor의 지향을 수동으로 늘려야 합니다.
    function Fn(){
        this.x = 100;
    }
    Fn.prototype = {
        constructor: Fn, //  constructor
        y: function(){
            
        },
        z: function(){
            
        }
    };
    var f1 = new Fn;
    f1.y();
    f1.z();
    console.log(f1.constructor) // ->Fn(){ this.x = 100; }
    

    b. 이런 방식으로 내장류에 공유의 속성을 추가하고 내장류에 Array를 추가하여 그룹을 무겁게 하는 방법
    Array.prototype = {
        constructor: Array,
        unique: function(){
            
        }
    }
    

    이런 방식은 이전에 원형에 존재했던 속성과 방법을 대체할 수 있기 때문에 이런 무릇 내장류를 수정하면 브라우저는 차단한다
    var ary = [1,2,2,1,2,3,4,2,1,3];
    ary.sort();
    console.log(ary); // -> [1, 1, 1, 2, 2, 2, 2, 3, 3, 4]
    

    그러나 내장된 방법을 하나하나 수정할 수 있다. 우리가 아래의 방식을 통해 수조의 원형에 방법을 추가할 때 방법명과 원래 내장된 것이 중복되면 다른 사람이 내장한 것을 수정할 수 있다. -> 이후 내장류의 원형에 방법을 추가하면 명칭은 모두 특별한 접두사가 필요하다.
    Array.prototype.sort = function(){
        console.log(this) // this -> ary    
        // [1,2,2,1,2,3,4,2,1,3]
    }
    var ary = [1,2,2,1,2,3,4,2,1,3];
    ary.sort();
    console.log(ary); // -> [1,2,2,1,2,3,4,2,1,3]
    

    좋은 웹페이지 즐겨찾기