Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SQL
- 보조정렬
- es6
- IntelliJ
- tomcat
- window
- Express
- Java
- JavaScript
- Sqoop
- table
- MSSQL
- Android
- R
- hadoop
- mybatis
- Eclipse
- NPM
- xPlatform
- GIT
- react
- vaadin
- SSL
- SPC
- Kotlin
- mapreduce
- plugin
- Python
- Spring
- 공정능력
Archives
- Today
- Total
DBILITY
javascript constructor function 본문
반응형
이거 보고 광고 한번 안 누른 이는 삼대가 재수가 없을지어다!ㅋㅋ
naming convention이 첫 글자는 대문자여야 한다. 그러라고 한다. 생성할 때 new를 사용.
object내에 method를 정의하면 생성될 때마다 각각 call stack, heap을 할당한다.
prototype에 property또는 method를 추가하면 같은 주소를 공유하므로, 불필요한 메모리 낭비도 줄일 수 있다?
결국 함수의 원형을 조작하는게 되어 상속개념과 같게 되는 것인가?
작성해 보니 객체 생성 후에 추가해도 추가가 되는 것인지, 이것도 hoisting이 되는 것인지 실행에 문제가 없다.
※ m1.sayGoodBye(); 부분을 prototype추가 전으로 올려보니 오류가 난다. hoisting이 안되나 보다.
__proto__는 부모를 가리킨다. 강제로 할당하면 바꿀 수 도 있다.
너무 깊은 것을 알려하면 몸이 망가진다. 그냥 필요할 때 알아보자. 결과는 그림 1과 같다.
function log(...args) {
args.forEach(function (v, i) {
console.log(v);
})
}
function FnObjGen(name, age = 14) {
this.name = name;
this.age = age;
this.selfIntroduce = function () {
log(`안녕하세요. 저는 ${this.name}이고 ${age}살 입니다.`);
};
}
var m1 = new FnObjGen('홍길동');
var m2 = m1;
var m3 = new FnObjGen('아버지', 30);
log(m1, m2, m1 === m2, m3, m1 === m3);
m1.selfIntroduce();
m2.selfIntroduce();
m3.selfIntroduce();
FnObjGen.prototype.goodbyeWord = '잘가~떠나지마!';
FnObjGen.prototype.sayGoodBye = function () {
log(`${this.goodbyeWord} 나 잘했죠?`);
}
m1.sayGoodBye();
m2.sayGoodBye();
m3.sayGoodBye();
log(m1.__proto__, m2.__proto__, m3.__proto__);
m2.__proto__ = m3;
log(m1.__proto__, m2.__proto__, m3.__proto__);
반응형
'front-end & ui > javascript' 카테고리의 다른 글
javascript es6 destructuring assignment ( 구조분해할당 ) (0) | 2021.12.22 |
---|---|
javascript es5 inheritance ( 상속 ) (0) | 2021.10.29 |
javascript es6 class (0) | 2021.10.28 |
javascript es6 function default, rest parameter (0) | 2021.10.28 |
javascript es6(es2015) spread operator, function apply, call, bind (0) | 2021.10.28 |
Comments