당신의 person
기능에 constructor function
또는 object constructor
모든 코드를 의미 용어 및 이 코드가과 함께 사용될 것으로 기대 0 연산자이므로 this
이 가리키는 새 객체가 주어집니다. 그것은 특정 방식으로 사용하도록 설계된 자바 스크립트의 함수입니다.
Javascript의 생성자 함수는 단지 생성자로 작동하고 new
연산자로 호출되도록 설계된 일상적인 일상 함수라는 것을 이해해야합니다. new
연산자를 사용하여 호출하도록 설계되었으므로 this
이 가리키는 브랜드 스 팽킹 새 객체가 있다고 가정합니다.
생성자 함수 내의 코드는 개체를 제대로 초기화하는 데 필요한 작업 만 수행하면됩니다. 아무것도 아니더라도 페이지와 코드 페이지에 이르기까지 - 이는 애플리케이션에 전적으로 의존합니다.
생성자 함수의 다른 강력한 기능은 프로토 타입을 할당 할 수 있다는 것입니다. 그렇게하면 JS 엔진이 전달할 초기 개체를 만들 때 개체에 필요한 기본 속성을 JS 엔진에 알려줍니다 off를 생성자 함수에 전달합니다.
따라서, 귀하의 예제에서 :
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor
}
당신은 프로토 타입에 몇 가지 방법을 추가 할 수 있습니다
Person.prototype = {
getFullName: function() {
return this.firstName + " " + this.lastName;
},
incrementAge: function() {
++this.age;
}
};
을 이제, 새로운 Person
객체를 만들 때 (내가으로 대문자로 전환했습니다 Javascript에서 생성자 함수를 사용하는 일반적인 규칙), 코드에서 생성자로 할당 한 두 속성을 모두 가진 객체를 얻을 수 있지만 프로토 타입에 할당 된 메서드도 갖게됩니다.
var p = new Person("Ted", "Williams", 39, "blue");
var fullname = p.getFullName(); // returns "Ted Williams"
이 방법의 프로토 타입을 사용하는 것이 아니라 생성자에 의해 각 방법의 하나를 할당 일반적으로 자바 스크립트에서보다 효율적이고 프로토 타입은 일이 너무 상속하는 수단을 제공합니다.
이것은 'new' 인스턴스를 생성 할 때 Object가되는 Constructor 함수입니다. – PHPglue
관습에 따라 생성자 이름은 'Person'과 같이 대문자로 표기됩니다. 그것은 당신이 그것을 부를 때 반드시'new'를 사용해야한다는 것을 기억하는 방법입니다. – Oriol
다음과 같이 Object 리터럴의'new' 인스턴스를 생성 할 수도 있습니다 :'if (! Object.create) {Object.create = function (o) {function F() {}; 에프.프로토 타입 = o; 새로운 F를 반환;}};'. 이제'var pers = {prop : 'value'}, newPers = Object.create (pers);'를 사용하십시오. 물론 객체에 인수를 전달할 수는 없습니다. – PHPglue