2019-07-03

4203 단어

대상을 향하다


대상 지향과 과정 지향


대상을 대상으로 하는 것은 당신의 수요를 하나의 대상으로 추상화한 다음에 이 대상을 대상으로 그 특성(속성)과 동작(방법)을 분석하는 것이다.이 대상을 우리는 유형이라고 부른다.대상을 대상으로 프로그래밍하는 사상의 특징 중 하나는 바로 봉인이다. 즉, 당신이 필요로 하는 기능을 한 대상에 두는 것이다.

봉인

  • 클래스를 만듭니다. (1) 함수는 변수에 저장되고 변수의 알파벳은 대문자로 표시됩니다.이 함수(클래스) 내부는this 변수에 속성을 추가하거나 방법: = 방식으로 호출
    var Book = function(id, bookname, price){
        this.id = id
        this.bookname = bookname
        this.price = price
    }
    
    (2): 클래스 원형
    Book.prototype.display = function(){}
    // of
    Book.prototype = {
        display: function(){}
    }
    
    을 통해 new 키워드로 var book = new Book ()를this와protototype의 차이점:this를 통해 추가된 속성, 방법은 현재 대상에 추가된 것이지만 JS는 원형prototype을 기반으로 한 언어이기 때문에 하나의 대상(JS에서 함수도 대상)을 만들 때마다그것은 계승의 속성을 가리키는 원형prototype을 가지고 있습니다. 방법.이렇게 프로토타입을 통해 계승하는 방법은 대상 자체가 아니기 때문에 이러한 방법을 사용할 때 프로토타입을 통해 1급 1급 검색을 통해 얻을 수 있다.this가 정의한 속성이나 방법을 통해 대상 자체가 가지고 있기 때문에 클래스를 통해 새로운 대상을 만들 때마다this가 가리키는 속성과 방법은 응답을 받을 수 있습니다.prototype을 통해 계승된 속성이나 방법은 각각prototype을 통해 접근할 수 있기 때문에 클래스를 통해 새로운 대상을 만들 때마다 이러한 속성과 방법은 다시 만들지 않습니다
  • 속성과 방법은 (1) 사유 변수를 봉인한다. 사유 방법은 JS의 함수급 작용역 때문에 함수 내부의 변수와 방법이 외부에 접근할 수 없다는 것을 성명한다. 이 특성을 통해 클래스의 사유 변수와 방법을 만들 수 있다.그러나 함수 내부에서this를 통해 만들어진 속성과 방법은 클래스를 만들 때 모든 대상 자체가 한 부를 가지고 외부에서 접근할 수 있기 때문에this를 통해 만들어진 속성은 대상의 공유 속성과 방법으로 볼 수 있고 클래스(창설시)나 대상 자체의 사유 속성과 사유 방법도 접근할 수 있다. 이런 방법의 특권이 비교적 크기 때문에 우리는 이를 특권 방법으로 본다.대상을 만들 때 이러한 특권 방법을 통해 우리는 일부 속성을 초기화할 수 있기 때문에 대상을 만들 때 사용하는 특권 방법은 클래스의 구조기로 볼 수 있다.
    //  ,  , , 
    var Book = function(id, name, price){
        //  
        var num = 1;
        //  
        function checkId(){};
        //  
        this.getName = function(){};
        this.getPrice = function(){};
        this.setName = function(){};
        this.setPrice = function(){};
        //  
        this.id = id;
        //  
        this.copy = function(){};
        //  
        this.setName(name);
        this.setPrice(price)
    }
    //  ( )
    Book.isChinese = truel
    //  ( )
    Book.resetTime = function(){
        console.log(123)
    }
    Book.prototype = {
        //  
        jsBook: false,
        //  
        display : function(){}
    }
    var b = new Book(11, 'JS', 50);
    console.log(b.num);    // undefined
    console.log(b.jsBook); // false
    console.log(b.id);      // 11
    console.log(b.isChinese);   // undefined
    console.log(Book.isChinese)  // true
    Book.resetTime(); // 123
    
  • 클로즈업 실현
    //  
    var book = (function(){
        //  
        var bookNum = 0;
        //  
        function checkBook(name){}
        //  
        function _book(newId, newName, newPrice) {
            //  
            var name, price;
            //  
            function checkId(id){}
            //  
            this.getName = function(){}
            this.getPrice = function(){}
            this.setName = function(){}
            this.setPrice = function(){}
            //  
            this.id = newId;
            //  
            this.copy = function() {};
            if(bookNum > 100)
                throw new Error(' ')
            //  
            this.setName(name);
            this.setPrice(price);
        }
        __book.protopy = {
            //  
            isJSBook : false,
            //  
            display : function(){}
        }
    })()
    
  • 창설 대상의 안전 모드
    //  
    var Book = function(title, time, type){
        this.title = title;
        this.time = time;
        this.type = type;
    }
    var book = Book('Js', '2031', 'js')
    console.log(book)   // undefined
    console.log(window.title) // Js
    console.log(window.time)  // 2031
    console.log(window.type)  // js
    
    위의 예는 new 키워드를 실례화하지 않았기 때문에 함수가 전역 역할 영역에서 실행되었기 때문에 전역 역할 영역에서this가 현재 대상을 가리키는 것이 전역 대상 윈도우입니다. 함수에 return 문장이 없기 때문에 이 북 변수는 결국 book 실행 결과를 알려주지 않기 때문에undefined 안전 모드
    //  
    var Book = function(title, time, type){
        //  this ( new )
        if(this instanceof Book){
            this.title = title;
            this.time = time;
            this.type = type;
        }else{
            return new Book(title, time, type)
        }
    }    
    var book = Book('Js', '2031', 'js')
    console.log(book)   // Book
    console.log(window.title) // undefined
    console.log(window.time)  // undefined
    console.log(window.type)  // undefined
    console.log(book.title) // Js
    console.log(book.time)  // 2031
    console.log(book.type)  // js
    
  • 입니다.

    좋은 웹페이지 즐겨찾기