English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在前面的章节中,我们学习了如何在JavaScript中创建对象。
前几章中的示例是有限的。它们仅创建单个对象。
有时我们需要一个“模型”来创建许多相同类型的对象(示例)。
모델을 생성하는 방법은 "모델"을 사용하는 것입니다}}객체 생성자.
한객체 생성자동일한 속성과 메서드를 가진 여러 개의 객체(예제)를 쉽게 생성할 수 있습니다.
아래 예제에서 function User()는 객체 생성자입니다:
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; }
new 키워드를 사용하여 생성자를 호출하여 동일한 유형의 객체를 생성합니다:
var Seagull = new User("Seagull", "Anna", 22, "New Delhi"); var tarush = new User("Tarush", "Balodhi", 34, "Bihar");테스트를 보세요‹/›
보이시다시피, 다른 매개변수를 사용하여 User 생성자를 호출하여 많은 다른 사용자 객체를 빠르게 구축할 수 있습니다. 이는 JavaScript가 내장 생성자(예: Array()와 Date())에서 사용하는 패턴과 완전히 일치합니다.
JavaScript는 특별한 키워드 this를 가지고 있으며, 이를 메서드에서 현재 객체를 참조하는 데 사용할 수 있습니다.
this가 객체에서 사용될 때, 그 값은 객체 자체입니다.
생성자 내에서 this는 값이 없습니다. 새 객체를 대체합니다. 새 객체를 생성할 때, this의 값은 새 객체가 됩니다.
객체에 새 속성을 추가하려면, 새 값을 속성에 할당할 수 있는 대입 연산자 (=)를 사용할 수 있습니다。
Seagull.weapon = "Sword";테스트를 보세요‹/›
주의:이 속성은 Seagull에 추가됩니다. 아니요.(다른 User 객체에 적용되지 않습니다).
객체에 새 메서드를 추가하려면, 새 함수를 속성에 할당할 수 있는 대입 연산자 (=)를 사용할 수 있습니다。
Seagull.greet = function() { return "Hello World"; };테스트를 보세요‹/›
주의:이 메서드는 Seagull에 추가됩니다.(다른 User 객체로 가리지 않습니다).
존재하는 객체에 새 속성을 추가하는 것처럼 생성자에 새 속성을 추가할 수는 없습니다:
User.weapon = "Sword";테스트를 보세요‹/›
생성자에 새 속성을 추가하려면, 그것을 생성자에 추가해야 합니다:
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; this.weapon = "Sword"; }테스트를 보세요‹/›
때때로는 후반에 새 속성을 생성자에 추가하고자 할 때, 모든 객체(예제) 간에 공유되는 생성자를 추가하고 싶을 때가 있습니다. 답은객체 원형.
생성자도 메서드를 정의할 수 있습니다。
우리아래와 같이존재하는 객체에 새 메서드를 추가하는 것과 마찬가지로 생성자에 새 메서드를 추가합니다。
对象에 메서드를 추가하는 것은 생성자 내에서 완료되어야 합니다。
function User(fname, lname, age, loc) { this.firstName = fname; this.lastName = lname; this.age = age; this.location = loc; this.fullName = function() { return this.firstName + " " + this.lastName; }; }테스트를 보세요‹/›
때로는 후속으로 생성자에 새 메서드를 추가하고 싶을 때가 있습니다. 이 메서드는 모든 객체(예제) 간 공유됩니다. 답은객체 원형.
JavaScript는 다음과 같은 내장 객체 생성자를 가집니다:
let x1 = new String(); //새 문자열 객체. let x2 = new Number(); //새 숫자 객체. let x3 = new Boolean(); //새 불리언 객체. let x4 = new Object(); //새 Object 객체. let x5 = new Array(); //새 Array 객체. let x6 = new RegExp(); //새 RegExp 객체. let x7 = new Date(); //새 Date 객체. let x8 = new Function(); //새 함수 객체.테스트를 보세요‹/›
위에서 볼 수 있듯이 JavaScript는 기본 데이터 타입의 객체로 String, Number, Boolean을 가집니다.
복잡한 객체를 생성하는 이유가 없습니다. 왜냐하면 원시 값은 훨씬 빠르기 때문입니다.
항상 숫자, 문자열, 불리언을 원시 값으로 간주하고 객체로 간주하지 마세요.
이러한 타입을 객체로 선언하면 실행 속도가 떨어지고 예상치 못한 결과가 발생할 수 있습니다.
var str1 = "New Delhi"; var str2 = new String("New Delhi"); document.write(str1 === str2); // 을 반환하여 오류가 발생합니다. 왜냐하면 str1와 str2다른 타입을 가진테스트를 보세요‹/›
객체를 비교할 수 없습니다:
var str1 = new String("New Delhi"); var str2 = new String("New Delhi"); document.write(str1 == str2); // 을 반환하여 오류가 발생합니다. 왜냐하면 str1와 str2다른 타입을 가진 document.write(str1 === str2); // r이 str을 반환하여 오류가 발생합니다. 왜냐하면 str1와 str2다른 타입을 가진테스트를 보세요‹/›
또한 이렇게 할 수도 있습니다:
new Object() 대체로 {} 사용
new String() 대체로 "" 사용
new Number() 대체로 0 사용
new Boolean() 대체로 false 사용
new Array() 대체로 [] 사용
사용/()/new RegExp() 대체
function (){}를 사용하여 new Function() 대체
let x1 ={}; let x2 = ""; let x3 = 0; let x4 = false; let x5 = []; let x6 = /()/; let x7 = function(){};테스트를 보세요‹/›
일반적으로, JavaScript 문자열은 리터럴 값으로 생성된 원시 값입니다: var city = "New Delhi";.
하지만, new 키워드를 사용하여 문자열 값을 객체로 정의할 수도 있습니다.: var city = new String("New Delhi");.
“ JS 문자열 ”단계에서 왜 문자열 값을 객체로 만들지 않아야 하는지 알 수 있습니다.
일반적으로, JavaScript 숫자는 리터럴 값으로 생성된 원시 값입니다: var num = 50);.
하지만, new 키워드를 사용하여 숫자 값을 객체로 정의할 수도 있습니다.: var num = new Number(50);.
“ JS 숫자 ”단계에서 왜 숫자 값을 객체로 만들지 않아야 하는지 알 수 있습니다.
일반적으로, JavaScript 불리언은 리터럴 값으로 생성된 원시 값입니다: var x = false;.
하지만, new 키워드를 사용하여 불리언 값을 객체로 정의할 수도 있습니다.: var x = new Boolean(false);.
“ JS 불리언 ”단계에서 왜 불리언 값을 객체로 만들지 않아야 하는지 알 수 있습니다.