찾다
웹 프론트엔드JS 튜토리얼JavaScript 객체 지향 디자인 2 생성자 Pattern_js 객체 지향

생성자 패턴을 사용하여 팩토리 패턴을 다시 작성하겠습니다.

코드 복사 코드는 다음과 같습니다.

function Employee(이름, 나이, 직업) {
this.name = 이름;
this.age = age;
this.job = job; 🎜>} ;
}
var Jim = new Employee("jim", 22, "소프트웨어 엔지니어")
var Sun = new Employee("Sun", 24, "Doctor"); 🎜>Jim .sayName();
Sun.sayName();


위 코드에서 Employee 함수는 CreateEmployee 함수를 대체합니다.
없음 표시된 생성된 개체
는 반환 문 없이
이 개체에 속성과 메서드를 직접 할당합니다.
Employee 클래스의 새 인스턴스를 만들려면 new 연산자를 사용해야 합니다. 이는 실제로 4단계로 구성됩니다.
새 객체 만들기
생성자의 범위를 새 객체에 할당
생성자에서 코드 실행
새 객체 반환
마지막으로 Jim과 Sun 위 코드에서는 두 개의 서로 다른 Employee 값을 저장합니다. 두 인스턴스에는 모두 Employee를 가리키는 생성자 속성이 있습니다.




코드 복사
코드는 다음과 같습니다. alert(Jim 인스턴스of Employee); //true alert(Sun 인스턴스of Employee);//true

동시에 이 두 객체는 ​​모두 Object 유형이며 다음 코드를 통해 감지할 수 있습니다.



코드 복사
코드는 다음과 같습니다. alert(Jim instanceof Object) // true alert(Sun 인스턴스of Object);//true

사용자 정의 생성자를 생성한다는 것은 나중에 해당 인스턴스가 특정 유형으로 표시될 수 있음을 의미하며 이는 생성자이기도 합니다. 패턴은 팩토리 패턴보다 성능이 뛰어납니다.
다음은 생성자에 대해 자세히 설명합니다.
생성자를 함수로 취급합니다
생성자와 다른 함수의 유일한 차이점은 호출 방식입니다. 그러나 생성자도 함수이므로 생성자를 정의하는 데 특별한 구문이 없습니다. 실제로 모든 함수는 new를 통해서만 호출할 수 있으며 생성자로 사용할 수 있습니다. 예를 들어 위의 new 메서드를 사용하여 Employee를 호출하는 것 외에도 다음과 같은 방법으로 호출할 수도 있습니다.




코드 복사
코드는 다음과 같습니다. //Call Employee(" 일반 기능으로" Sun", 28, "SoftWare Engineer"); //창에 추가
window.sayName();//Sun





코드 복사
코드는 다음과 같습니다. //다른 객체의 범위에서 호출 var o = new Object() Employee.call(o , "Sun", 28, "SoftWare Engineer");
o.sayName();//Sum


생성자 문제
생성자를 사용하는 것은 각 강도에 대해 다시 생성한다는 것입니다. 위의 두 개체에 있는 sayName 메서드는 실제로 다른 함수의 인스턴스입니다.
alert(Jim.sayName == Sun.sayName); //false
그러나 동일한 작업을 완료하는 두 개의 함수 인스턴스를 생성하므로 위 함수를 다음과 같이 다시 작성합니다




코드 복사
코드는 다음과 같습니다. function Employee(이름, 나이, 직업) { this.name = 이름
this.age = age
this.job = job; ;
this.sayName =sayName;
}
function sayName() {
alert(this.name)
}


이것은 다음과 같은 문제를 해결합니다. 두 함수 같은 문제지만 또 새로운 문제가 발생합니다. 전역 범위에 정의된 이 함수는 실제로 특정 개체에서만 참조할 수 있으며, 가장 끔찍한 문제는 개체가 많은 메서드를 정의해야 하는 경우 필요하다는 것입니다. 많은 전역 함수를 정의하기 위해 이 사용자 정의 참조 유형에는 캡슐화가 전혀 없습니다.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何使用Go语言实现面向对象的事件驱动编程如何使用Go语言实现面向对象的事件驱动编程Jul 20, 2023 pm 10:36 PM

如何使用Go语言实现面向对象的事件驱动编程引言:面向对象的编程范式被广泛应用于软件开发中,而事件驱动编程是一种常见的编程模式,它通过事件的触发和处理来实现程序的流程控制。本文将介绍如何使用Go语言实现面向对象的事件驱动编程,并提供代码示例。一、事件驱动编程的概念事件驱动编程是一种基于事件和消息的编程模式,它将程序的流程控制转移到事件的触发和处理上。在事件驱动

解析PHP面向对象编程中的享元模式解析PHP面向对象编程中的享元模式Aug 14, 2023 pm 05:25 PM

解析PHP面向对象编程中的享元模式在面向对象编程中,设计模式是一种常用的软件设计方法,它可以提高代码的可读性、可维护性和可扩展性。享元模式(Flyweightpattern)是设计模式中的一种,它通过共享对象来降低内存的开销。本文将探讨如何在PHP中使用享元模式来提高程序性能。什么是享元模式?享元模式是一种结构型设计模式,它的目的是在不同对象之间共享相同的

go语言是面向对象的吗go语言是面向对象的吗Mar 15, 2021 am 11:51 AM

go语言既不是面向对象,也不是面向过程,因为Golang并没有明显的倾向,而是更倾向于让编程者去考虑该怎么去用它,也许它的特色就是灵活,编程者可以用它实现面向对象,但它本身不支持面向对象的语义。

python是面向对象还是面向过程python是面向对象还是面向过程Jan 05, 2023 pm 04:54 PM

python是面向对象的。Python语言在设计之初,就定位为一门面向对象的编程语言,“Python中一切皆对象”就是对Pytho 这门编程语言的完美诠释。类和对象是Python的重要特征,相比其它面向对象语言,Python很容易就可以创建出一个类和对象;同时,Python也支持面向对象的三大特征:封装、继承和多态。

PHP面向对象编程入门指南PHP面向对象编程入门指南Jun 11, 2023 am 09:45 AM

PHP作为一种广泛使用的编程语言,已成为构建动态网站和网络应用程序的首选语言之一。其中,面向对象编程(OOP)的概念和技术越来越受到开发者的欢迎和推崇。本篇文章将为读者提供PHP面向对象编程的入门指南,介绍OOP的基本概念,语法和应用。什么是面向对象编程(OOP)?面向对象编程(Object-OrientedProgramming,简称OOP),是一种编程

如何使用Go语言实现面向对象的数据库访问如何使用Go语言实现面向对象的数据库访问Jul 25, 2023 pm 01:22 PM

如何使用Go语言实现面向对象的数据库访问引言:随着互联网的发展,大量的数据需要被存储和访问,数据库成为了现代应用开发中的重要组成部分。而作为一门现代化、高效性能的编程语言,Go语言很适合用来处理数据库操作。而本文将重点讨论如何使用Go语言实现面向对象的数据库访问。一、数据库访问的基本概念在开始讨论如何使用Go语言实现面向对象的数据库访问之前,我们先来了解一下

Python中的面向对象编程Python中的面向对象编程Jun 10, 2023 pm 05:19 PM

Python作为一种高级编程语言,在众多编程语言中占有举足轻重的地位。它的语法简单易学,拥有各种强大的编程库,被广泛应用于数据处理、机器学习、网络编程等领域。而其中最重要的一点便是Python完美支持面向对象编程,本文将重点阐述Python中的面向对象编程。一、面向对象编程的基本概念在面向对象的编程语言中,数据和方法被封装在对象的内部。这使得对象能够独立地进

面向对象是啥意思面向对象是啥意思Jul 17, 2023 pm 02:03 PM

面向对象是软件开发方法,一种编程范式。是一种将面向对象的思想应用于软件开发过程并指导开发活动的系统方法。这是一种基于“对象”概念的方法论。对象是由数据和允许的操作组成的包,它与目标实体有直接的对应关系。对象类定义了一组具有类似属性的对象。面向对象是基于对象的概念,以对象为中心,以类和继承为构建机制,认识、理解和描绘客观世界,设计和构建相应的软件系统。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구