2021/12/23

최리나·2021년 12월 23일
0

JavaScript

목록 보기
5/12

실습예제 exam11-8, 11-9

console.log("-------------");
console.log("Object() 생성자:")
var obj0= new Object();
console.log(obj0);
console.log(obj0.constructor);
console.log(obj0.prototype);
obj.test0();

1번예제
Object의 상위생성자 prototype -null

오브젝트 기본생성자를 통해 객체를 만들고,
객체는 프로토타입을 가지고있음
프로토타입안에 constructor 정보가 들어있음.
프로토타입에 test0()추가

*test0()을 호출할때

obj0 {}

1)그 안에는 없음.
2) 없으면 상위 object에서 찾는다.

2번예제
프로토타입을 따라간다. f1()

생성자에서 찾는다.
없으면 상위생성자의 prototype에서 찾는다.

원래 Object 프로토타입과 연결된 객체가 들어있는데.
내가 다시 재할당하면 덮어쓴다.
안 덮어쓰면 상속관계를 구축할 수 없다.

객체에 손 못대게 만드게 할 수 있음 readonly

상위생성자와 연결된 객체를 만들려고 하는것.
f2.prototype = Object.create(f1.prototype);
이걸안해주면 f2의 상위는 Object임

f2.call(this) f2함수의 바디 실행할.

객체 상속관계 - 돔API가 상속관계로 되어있다.


문법을 익혀서 예제를 많이 풀어보는게 중요
문법에 얽매여서 진도를 못나가면 안됨.

영어도 마찬가지로 문법익히고 통문장.

문법은 잊어버리게 돼있으므로, 활용을 익혀라


함수소속 프로퍼티와 객체 소속 프로퍼티

javascript dom api
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model

영어번역은 누르면 안나옴

Deprecated properties쓰지말라는 소리

document.querySelector (x)
document.prototype.querySelector(0)

프로토타입 안에 있는 변수나 함수는
함수객체 이름을 쓰면 안되고, 함수를 통해 초기화된
객체를 통해서 호출해야한다.

프로토타입에 있는 것들은 객체를 만들어서 호출
array 와 JSON 비교

실습예제 _exam05-1,05-2,05-3

Document.getElementById() 가 아니라
Document.prototype.getElementById()

문서를 만든 사람이 이정도는 헷갈릴자들이 아닐꺼라는 생각에서 문서를 잘못만들었을 것
문서가 헷갈린다.
document.prototype.
프로토타입 소속이라는건 그 객체에 대해서 사용할 수 있다.

문서의 문맥을 읽어보고
사용예를 보고 판단.ㅌ

특정객체를 사용하는지, 함수소속인지

=> 문서를 볼때, 메뉴얼을 볼떄 상속관계를 타고 올라가면 메소드르 볼 수 있다.
그래도 없으면 웹검색

메뉴얼은 다 못뒤진다.

자바스크립트 객체
프로토타입 소속, 함수소속

배열이 아니므로
반복문을 돌리거나 for of를 써라.

태그를 찾았으면 콘텐트를 집어넣거나 뺴거나
-미묘한차이점 확인

iterable - ex02/19-5

https://helloworldjavascript.net/pages/260-iteration.html

Generator 함수 안에서는 yield라는 특별한 키워드를 사용할 수 있습니다. Generator 함수 안에서 yield 키워드는 return과 유사한 역할을 하며, iterable의 기능을 사용할 때 yield 키워드 뒤에 있는 값들을 순서대로 넘겨줍니다.

function* getIterableObject(){

yield : "홍길동";
yield : "임꺾정";
yield : "유관순";

}

var obj = getIterableObject();

for (var v of obj) {
console.log(v);
}

symbol이 함수라면

symbol이라는 객체에 iterator를 저장해놓고 꺼낼때

자바스크립트의 다양한 상수값을 저장해놓는 객체가 Symbol

처음에는 단순한 기능이었겟지만
코드가 복잡하더라도

개발자가 함수이름을 몰라도 꺼낼 수 있도록

//궁금하면 찍어봐
console.log(typeof Symbol.iterator);

--개발자마다 중구난방으로 값을 꺼낼때
이름을 다양하게
---규칙을 정함 .next()을 써라 목록에서 값ㅇ르 꺼낼때

1)MAP SETMAP ARRAY 사용하지
직접 ITERABLE 객체를 만들 이유가 없다.

console.log(typeof Symbol.iterator);
var iterator = contactMapSymbol.iterator;
while (true) {
var entry = iterator.next(); //보통 key/value 한쌍으로 되어있는 값을 가리킬 떄 entry라 한다.
if(entry.done){ // 더이상 꺼낸 값이 없다면, Item.done == true
break;
}
/* 구조분해할당
while (true){
var {value, done} = obj2.next(); // 리턴될때 값 꺼냈으면 false 꺼낼게없으면 flase
if(done){
break;
}

/
//있다면 출력해라
var v = entry.value;
console.log(v);
}
// 제너레이터 함수를 이용하여 iterable protocal (규칙)을 따르는 객체 리턴하기
// Generator 함수 안에서 yield 키워드는 return과 유사한 역할을 하며, iterable의 기능을 사용할 때 yield 키워드 뒤에 있는 값들을 순서대로 넘겨줍니다
function
getIterableObject(){

yield "홍길동";
yield "임꺽정";
yield "유관순";

}

var obj = getIterableObject();

//자동처리
for (var v of obj) {obj에 아무나 못온다는 뜻.
조건이 필요 그 조건을 다갖췄을때 이 자리에 그 객체를 둬여함
console.log(v);
}
console.log("---------------------");

iterable 값을 꺼내주는 역할을 하는 객체

자바에서도 iterable이 있음.


목록collection(list) 과 반복자 iterator

실습예제 _exam02/19-1~19-7

1) 목록에서 값을 꺼낼때,
그럴수 없으면 직접꺼내야함.

2) iterator 값을 꺼내 주는 일을 한다.
2번 방법을 스려면 iterator의 규칙대로 작성되야한다는 조건이 있다.

특정객체를다루지않음 - 함수
특정객체를 다루는 것 - 메소드 = opertor(연산자)


객체소속 프로퍼티, 함수소속 프로퍼티

  • 함수소속 프로퍼티는 특정객체와 상관없이 사용하는 함수와 변수
  • 객체소속 프로퍼티는 특정객체를 다루는 함수와 변수

profile
스스로 공부한 내용을 정리하고 공유하는 블로그

0개의 댓글