JS 객체 지향 및 프로세스 지향

4369 단어
전언
객체용 프로그래밍:
당신의 수요를 하나의 대상으로 추상화한 다음에 이 대상을 대상으로 그 특징(속성)과 동작(방법)을 분석하는 것이다. 이 대상을 유형이라고 한다.
프로세스를 위한 프로그래밍:
특징: 봉인, 당신이 필요로 하는 기능을 한 대상에 넣는 것이다
클래스 만들기
var Person = function(name, height, weight){
  this.name = name;
  this.height = height;
  this.weight = weight;
  this.say = function(){
    console.log("hello world");
  } }

이렇게 해서 우리는 Person 클래스를 만들었는데 그는 세 가지 속성을 가지고 있지만 우리는 클래스의 원형에 속성과 방법을 추가할 수 있다.
Person.prototye.work = function(){
   console.log('Java')      
}
:
Person.prototype = {
  work: function(){
    console.log('Java')
  }
}

이것은 통상적으로 우리가 클래스를 봉인하는 방식이다. 우리가 자주 사용하는 속성과 방법을 우리의 추상적인 Person 클래스에 봉인했다.
이 Person 클래스를 사용할 때 우리는 직접 Person 클래스를 사용할 수 없습니다. new 키워드로 새로운 대상을 실례화해야 합니다. 그러면 우리는 대상점 띠나 방법을 통해 접근할 수 있습니다.
var peopleOne = new Person('Mike','180cm','60kg')
console.log(peopleOne.name) // Mike

Js는 원형prototype을 기반으로 한 언어로 원형에 방법과 속성을 추가하여 만든 대상을 통해 접근할 수 있다.
왜냐하면 하나의 대상을 만들 때마다 원형prototype이 집적된 속성과 방법을 가리키는 데 사용됩니다~
따라서 우리가 만든 대상이 클래스 자체에 봉인되지 않은 방법을 사용할 때prototype 1급 1급 검색을 통해prototype을 통해 계승된 속성과 방법은 모두 접근할 수 있고 다시 만들지 않습니다~
constructor는 모두 낯설지 않습니다. 구조 함수입니다. Js에서 함수나 대상을 만들 때 원형 대상prototype을 만들고 프로토type 대상은 함수 중의 액this처럼 constructor 속성을 만듭니다. 그러면 이 속성은 전체 원형 대상을 가진 함수나 대상을 가리키는 것입니다.(또한: Js에서 만물 겸 대상, 함수 function도 대상)...새로 만든 대상 접근 클래스의 원형 지향 대상은proto__ 하지만 실제 개발에서는 이걸 사용할 줄 몰라요..
prototype 대상 중의 속성과 방법은 공유 속성과 공유 방법으로 불린다.클래스에도 사유 속성과 사유 방법이 있습니다. 이 클래스의 실례를 통해 대상을 방문할 수 없습니다~
var Person(name,age){
  //
  this.name = name;
  this.age = age
  //
  this.say = function () {
    alert('hello')
  }
//
  this.getName = function(){
    return this.name
  }
  this.setName = function(newName){
    this.name = newName
  }
  
  //
  var num = 100
  //
  function ill(){}
  
  //
  this.setName('mike')
  } }
//
Person.isChinese = true;
//
Person.run = function () {
  console.log('running')
}

Person.prototype = {
  //
  isYoung: true,
  //
  sing: function(){
    console.log('singing')
  }
}

물론 우리도 유형의 정적 변수를 폐쇄를 통해 실현할 수 있다. 예를 들어
var Person = (function(){
  //
  var isCute = true
  //
  function run() {}

  //
  return function(name,age){
    //
    var num = 100
    //
    function ill(){}

    //
    this.getName=function(){}
    this.setName=function(newName){}
    //
    this.name=name;
    //
    this.draw=function(){}
    //
    this.setName(newName)
  }
})()

Person.prototype={
  //
  isYoung:true,
  //
  run:function(){}
}

패키지를 닫을 때 유한한 접근으로 함수 역할 영역에서 변수의 함수를 만듭니다. 즉, 한 함수 내부에 다른 함수를 만듭니다.
우리는 이 클립을 창설 대상의 구조 함수로 삼는다. 이렇게 하면 클립이자 실례적인 대상의 함수로 클래스 함수 작용역에 접근할 수 있다. 예를 들어 isCute라는 변수는 이때 정적 사유 변수이고,run 방법은 정적 사유 방법이다.물론 폐쇄 내부에는 자신의 사유 변수num, 사유 방법ill...(위 클로징을 예로 들면)
물론 폐쇄 내부에서 완전한 클래스를 실현한 다음에 (return)으로 되돌릴 수도 있습니다. 여기는 예시하지 않습니다~
 
기왕 종류가 생겼지만, 어떤 사람들은 항상 불가피하게 new 키워드를 잊어버릴 수 있다. 이럴 때, 우리는 수동으로 그것에 대한 판단을 덧붙여서 new가 잘못되지 않도록 해야 한다
var Person = function(name){
  if(this instanceof Person){
    this.name = name
  }else{
    return new Person(name)
  }
}

이때, 당신은 더 이상 new 키워드가 없어서 실수할 필요가 없습니다~~
이 편 끝, 후속 업데이트...
전재 대상:https://www.cnblogs.com/gxlself/p/8642081.html

좋은 웹페이지 즐겨찾기