객체 인스턴스화 방법

내가 네트워크를 통해 수집 된 다양한 방법으로 개체의 인스턴스에서 발견 학습 자바 스크립트의 과정에서 오전, 다음과 같은 다섯 가지 일반적으로 사용되는 방법의 요약, 잘못된 경우, 위대한 하나님을 지적하시기 바랍니다.

참조 기사를 다시 인쇄 : HTTPS : //www.cnblogs.com/iflygofy/p/11435479.html

1.Object 생성자 모드

  • 루틴 : 동적으로 속성 / 메소드를 추가, 빈 개체 객체를 생성
  • 해당 장면 : 불확실한 시작 객체의 내부 데이터
  • 문제 : 너무 많은 문
<script type="text/javascript">
    // 一个人: name:"Tom", age: 12
  var p = new Object()
  p = {}
  p.name = 'Tom'
  p.age = 12
  p.setName = function (name) {
    this.name = name
  }
  p.setaAge = function (age) {
    this.age = age
  }
  console.log(p)
</script>

출력 :
그림 삽입 설명 여기

2. 객체 리터럴

  • 루틴은 : {}, 객체를 생성 속성 / 메소드를 지정하는 데 사용
  • 응용 프로그램 시나리오 : 객체의 내부 데이터의 시작 부분에서 결정된다
  • 질문 : 여러 객체를 생성하는 경우, 중복 코드가있다
<script type="text/javascript">
  var p = {
    name: 'Tom',
    age: 23,
    setName: function (name) {
      this.name = name
    }
  }
    
  console.log(p.name, p.age)
  p.setName('JACK')
  console.log(p.name, p.age)
    
 **加粗样式** var p2 = {
    name: 'BOB',
    age: 24,
    setName: function (name) {
      this.name = name
    }
  }
</script>

출력 :
그림 삽입 설명 여기

3. 공장 패턴

  • 루틴 : 공장 기능 및 반환에 의해 동적으로 생성 된 객체
  • 응용 프로그램 시나리오 : 여러 개체를 만들 필요
  • 문제 : 객체가 특정 유형이없는, Object 형식입니다
<script type="text/javascript">
  // 工厂函数: 返回一个需要的数据的函数
  function createPerson(name, age) {
    var p = {
      name: name,
      age: age,
      setName: function (name) {
        this.name = name
      }
    }
    return p
  }

  var p1 = createPerson('Tom', 12)
  var p2 = createPerson('JAck', 13)
  console.log(p1)
  console.log(p2)
</script>

출력 :
그림 삽입 설명 여기

4. 사용자 정의 모델 생성자

  • 루틴 : 사용자 정의 생성자로 새로운 객체를 생성
  • 응용 프로그램 시나리오 : 특정 된 오브젝트의 여러 유형을 미리 작성할 필요
  • 질문 : 각 오브젝트는 동일한 데이터, 메모리의 낭비를 갖는다
<script type="text/javascript">
  function Person(name, age) {
    this.name = name
    this.age = age
    this.setName = function (name) {
      this.name = name
    }
  }

  var p1 = new Person('Tom', 12)
  var p2 = new Person('Tom2', 13)
  console.log(p1, p1 instanceof Person)
</script>

출력 :
그림 삽입 설명 여기

생성자의 프로토 타입 조합 패턴 +

  • 루틴 : 프로토 타입에 기능 추가 초기화 과정에서 사용자 정의 생성자, 속성
  • 응용 프로그램 시나리오 : 특정 된 오브젝트의 여러 유형을 미리 작성할 필요
<script type="text/javascript">
  function Person (name, age) {
    this.name = name
    this.age = age
  }
  Person.prototype.setName = function (name) {
    this.name = name
  }
  var p1 = new Person('Tom', 12)
  var p2 = new Person('JAck', 23)
  p1.setName('TOM3')
  console.log(p1)

  Person.prototype.setAge = function (age) {
    this.age = age
  }
  p1.setAge(23)
  console.log(p1.age)

  Person.prototype = {}
  p1.setAge(34)
  console.log(p1)
  var p3 = new Person('BOB', 12)
  p3.setAge(12)
</script>

출력 :
그림 삽입 설명 여기

게시 된 원본 기사 · 원 찬양 한 · 전망 (36)

추천

출처blog.csdn.net/weixin_45172119/article/details/104070316