property key: 문자형

const obj = {
	1: ‘1입니다.’,
	false: ‘거짓’
}

Object.keys(obj); // [“1”, “false”]
obj[‘1’]; //“1입니다.”
obj[‘false’]; // “거짓”

 

Symbol: ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값

  -  유일성 보장, 유일한 식별자를 만들 때 사용

  -  new 연산자를 사용하지 않음

  -  Symbol 함수는 매번 다른 Symbol 값을 생성

  -  변수.description;을 통해 이름을 얻을 수 있음

 

ex)

const a = Symbol();
const b = Symbol();

console.log(a); //Symbol() 출력
console.log(b); //Symbol() 출력

console.log(a === b); //false 출력
console.log(a == b); //false 출력

 

ex)

const id = Symbol(‘id’); // Symbol안의 ‘id’는 설명 또는 이름이라고 부름
const id2 = Symbol(‘id’);

console.log(id); //Symbol(id) 출력
console.log(id2); //Symbol(id) 출력

console.log(id === id2); //false 출력
console.log(id == id2); //false 출력

 

 

property key: 심볼형

const id = Symbol(‘id’);

const user = {
	name: ‘Angel’,
	age: 30,
	[id]: ‘myId’ //심볼형 키는 대괄호로 감싸야 함
}

console.log(user); //{ name: ”Angel”, age: 30, Symbol(id):” myId” } 출력
console.log(user[id]) //“myId” 출력

ž   Object.keys(user); [“name”, “age”]

ž   Object.values(user); [“Angel”, 30]

ž   Object.entries(user); [Array(2), Array(2)]

ž   for(let a in user) { }

     →  keySymbol형인 property는 건너 뛴다.

 

Symbol.for(): 전역 심볼

  -  하나의 심볼만 보장받을 수 있음

  -  없으면 만들고, 있으면 가져오기 때문

  -  Symbol.for 메소드는 Symbol 하나를 생성한 뒤, 키를 통해 같은 Symbol을 공유

  -  Symbol.keyFor(변수)를 통해 이름을 얻을 수 있음

 

ex)         

const id = Symbol(‘id’);
const id2 = Symbol(‘id’);

console.log(id === id2); //true 출력

Symbol.keyFor(id1) // “id”

 

 

숨겨진 Symbol key 보는 방법

const id = Symbol(‘id’);

const user = {
	name: ‘Angel’,
	age: 30,
	[id]: ‘myId’
}

Object.getOwnPropertySymbols(user); // [Symbol(id)]
//key가 Symbol형인 것들만 볼 수 있음

Reflect.ownKeys(user); //[“name”, “age”, Symbol(id)]
//Symbol형을 포함한 객체의 모든 key를 볼 수 있음

 

 

Symbol이 필요한 이유

Symbol 사용하지 않은 경우)

 

Symbol을 사용한 경우)

 →  다른 개발자가 작성한 코드에 영향을 미치지 않고 객체에 프로퍼티를 추가할 수 있다.

 

 

 

 

↓[코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=E9uCNn6BaGQ 

 

 

 

문제 

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-2^31, 2^31 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

 

 

입출력

Example 1:

Input: x = 123 Output: 321

 

Example 2:

Input: x = -123 Output: -321

 

Example 3:

Input: x = 120 Output: 21

 

Example 4:

Input: x = 0 Output: 0

 

 

제약

Constraints:

  • -2^31 <= x <= 2^31 - 1

 

 

코드

var reverse = function(x) {
    if(x>0) {
        x = reverseStr(x);
    }
    else if(x<0) {
        x = reverseStr(Math.abs(x));
        x = -x;
    }
    
    if(x<Math.pow(-2, 31) || x>Math.pow(2, 31)-1) return 0
    
    return x;
};

function reverseStr(num) {
    return num.toString().split("").reverse().join().replaceAll(',', '');
}

 

 

 

 

Computed property

let a = ‘age’;

const user = {
	name: ‘Angel’,
	[a]: 30 //age: 30
}

 

const example = {
	[1+4]: 5,
	[“안녕”+”하세요”]: “Hello”
}

console.log(example)


//	Object {
//		5: 5,
//		안녕하세요: “Hello”
//	} 출력

 

function makeObj(key, val) {
	return {
		[key]: val,
	};
}

const obj = makeObj(“age”, 30);

console.log(obj); //{age: 30} 출력

 

 

객체 메소드

Object.assign(): 객체 복제

ex)          

const user = {
	name: ‘Angel’,
	age: 30
}

const newUser = Object.assign({}, user);

const newUser2 = Object.assign({ id: 1004 }, user);

const newUser3 = Object.assign({ name: Baby }, user);

 newUser  name: ‘Angel’, age: 30

 newUser2  name: ‘Angel’, age: 30, id: 1004

 newUser3  name:’Baby’, name: ‘Angel’, age: 30

 

※  newUser = user;는 참조 복사(얕은 복사)가 되어 만약 newUser.name = ‘Baby’로 변경 시 username‘Baby’로 변경된다.  

 

ex)         

const user = { name: ‘Angel’ }

const info1 = { age: 30 }

const info2 = { id: 1004 }

const newUser = Object.assign(user, info1, info2);

// newUser → name: ‘Angel’, age: 30, id: 1004

 

 

 

Object.keys(): 객체 프로퍼티의 키를 배열로 반환

 const user = {
	name: ‘Angel’,
	age: 30,
	id: 1004
}

Object.keys(user); //[“name”, “age”, “id”]

 

 

Object.values(): 객체 프로퍼티의 값을 배열로 반환

Object.values(user); //[“Angel”, 30, 1004]

 

 

Object.entries(): 객체 프로퍼티의 키와 값을 배열로 반환

Object.entries(user); 


//	[
//		[“name”, “Angel”],
//		[“age”, 30],
//		[“id”, 1004]
//	]

 

 

Object.fromEntries(): 키와 값의 배열을 객체로 만듦

const arr =
	[
		[“name”, “Angel”],
		[“age”, 30],
		[“id”, 1004]
	]

Object.fromEntries(arr);


//	{
//		name: ‘Angel’,
//		age: 30,
//		id: 1004
//	}

 

 

 

 

↓[코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=6NZpyA64ZUU 

 

 

+ Recent posts