거기에 생성자가 있습니다. C 및 Java 사람들에게 JavaScript를 더 읽기 쉽게 만들어주는 특별한 종류의 함수입니다.
어떻게 특별한가요?
글쎄, 하나의 이유는 당신이 놀고있는 물건을 돌려주지 않고 언급 한 이유 때문입니다. 반환 값이없는 경우 this
값을 빈 객체로 반환합니다. 일반적으로 this
은 window
또는 o.method
this
과 같은 상황을 기준으로 일반적인 상황에서는 o
을 나타냅니다. 귀하의 경우 이것은 생성자이며 new로 호출 했으므로, 으로 프로토 타입을 설정하고 createCar.prototype.constructor
을 가리키는 prototype.constructor로 설정된 새로운 빈 객체를 참조하십시오.이 경우 createCar
입니다. 위의 답변에서 지적했듯이이 값을 수정하면 예상대로 작동하는 작업을 얻을 수 있습니다.
이러한 답변은 여전히 C 코드와 유사하므로 어떻게 재미있는 JavaScript 코드를 만들 수 있습니까? 이것을 시도하십시오 :
function createCar(sColor, iDoors, iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
//return this; //Not needed, but is what happens under the covers
}
createCar.prototype = {
showColor: function(){
alert(this.color);
}
}
var oCar1 = createCar("red", 4, 23);
var oCar2 = createCar("blue", 3, 25);
oCar1.showColor(); //alerts “red”
oCar2.showColor(); //alerts “blue”
다시 지루해! 좀 더 재미있게 할 수 있습니다.
createCar.prototype.showColor.call(oCar1); //Alerts "red"
createCar.prototype.showColor.call(new createCar("red")); //Also alerts red
TBH, 나는 결코 생성자를 사용하지 않지만 발을 축축하게하는 좋은 방법입니다.
질문에 답변했습니다. 너 아직도 알고 싶은 다른 것이 있니? –
예, 당신은 항상 허리 밖으로 코드를 들여 쓰기해야합니다. –