第JS-6日(object)
13580 ワード
Object
Literals and properties
object生成方法はliteralとconstructorの2種類ありますconst obj1 = {}; // object literal syntax
const obj2 = new Object(); // object constructor syntax
function print(person) {
console.log(person.name);
console.log(person.age);
}
const comet = { name: 'comet', age: 20 }; //class 없어도 obj 생성 가능!
print(comet);
comet.hasJob = true; //이처럼 이후에 추가도 가능
//but 지양!
delete comet.hasJob; //이처럼 이후에 삭제도 가능!
オブジェクトから新しいkey:valueを追加または削除できますが、読みやすさが低下し、デバッグが困難になり、複雑になるので避けてください.
Computed properties
オブジェクトをロードするには、次の2つの方法があります.
comet.nameではなくcomet['name']方式の使用目的があまり理解できず、学習グループのメンバーの一人がうまく説明してくれたので理解しました!// comet.name === comet['name']
//대신 []안에는 String 타입으로 넣어야 한다
console.log(comet.name); //이 방법은 사용하는 그 순간 받아올 때 사용(일반적인 방법)
console.log(comet['name']); // 이 방법은 지금 당장 어떤 key를 불러올지 모르고 runtime에서 결정될 때 사용
function printValue(obj, key) {
console.log(obj.key); //요따구로 쓰면 당연히 obj에는 key라는 property가 읎기에 undefined 뜹니다!
//이 때가 바로 ['']를 써야 하는 적기인 것이지요 우리가 여기에 뭐가 들어갈지 아직 모르니까요~
console.log(obj[key]); //요렇게 말이지요ㅎ
}
printvalue(comet, 'name')
printvalue(comet, 'age')
Property value shorthand const person1 = { name: 'bob', age: 7 };
const person2 = { name: 'james', age: 14 };
const person3 = { name: 'steve', age: 81 };
const person4 = new Person('comet', 21);
//person 4를 추가하고 싶을 때 또 이 노가다를 하라고?
//어림도 없지~ constructor function 만들어버리기~
console.log(person4); //출력 잘되죠?
次のコード接続
Constructor function function Person(name, age) {
//this = {};
this.name = name;
this.age = age;
// return this;
//주석으로 달아놓은 요 두 코드가 생략된 거에요!!
}
in operator: property existence check (key in obj) // 해당하는 key가 object 안에 있는지
console.log('name' in comet);
console.log('age' in comet);
console.log('riot' in comet); //false겠죠? 정의되지 않은 property거든요
console.log(comet.riot); // undefined나올 거에요
for..in vs for..of // for(key in obj)
console.clear(); //요건 그냥 콘솔창의 이전 출력들 다 지우는 코드
for (key in comet) {
console.log(key);
}
// for (value of iterable)
// 배열과 같이 순차적인 거에서 사용
const array = [1, 2, 4, 5];
for (value of array) {
console.log(value);
}
Fun cloning // Object.assign(dest, [obj1, obj2, obj3...])
const user = { name: 'comet', age: 21 };
const user2 = user;
//user은 name, age를 가르키는 ref를 가르킨다
//user2에 user가 할당됐으니 user2에도 같은 name, age를 가르키는 ref가 할당된다
user2.name = 'coder';
//따라서 이처럼 user2.name을 변경하면 user의 ref이 가르키는 name과 동일한 변수의 값이 바뀌므로
console.log(user);
//user.name도 'coder'로 바뀌게 된다
// old way
// new way
Reference
この問題について(第JS-6日(object)), 我々は、より多くの情報をここで見つけました
https://velog.io/@khsfun0312/JS-6일차object
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const obj1 = {}; // object literal syntax
const obj2 = new Object(); // object constructor syntax
function print(person) {
console.log(person.name);
console.log(person.age);
}
const comet = { name: 'comet', age: 20 }; //class 없어도 obj 생성 가능!
print(comet);
comet.hasJob = true; //이처럼 이후에 추가도 가능
//but 지양!
delete comet.hasJob; //이처럼 이후에 삭제도 가능!
オブジェクトをロードするには、次の2つの方法があります.
comet.nameではなくcomet['name']方式の使用目的があまり理解できず、学習グループのメンバーの一人がうまく説明してくれたので理解しました!
// comet.name === comet['name']
//대신 []안에는 String 타입으로 넣어야 한다
console.log(comet.name); //이 방법은 사용하는 그 순간 받아올 때 사용(일반적인 방법)
console.log(comet['name']); // 이 방법은 지금 당장 어떤 key를 불러올지 모르고 runtime에서 결정될 때 사용
function printValue(obj, key) {
console.log(obj.key); //요따구로 쓰면 당연히 obj에는 key라는 property가 읎기에 undefined 뜹니다!
//이 때가 바로 ['']를 써야 하는 적기인 것이지요 우리가 여기에 뭐가 들어갈지 아직 모르니까요~
console.log(obj[key]); //요렇게 말이지요ㅎ
}
printvalue(comet, 'name')
printvalue(comet, 'age')
Property value shorthand const person1 = { name: 'bob', age: 7 };
const person2 = { name: 'james', age: 14 };
const person3 = { name: 'steve', age: 81 };
const person4 = new Person('comet', 21);
//person 4를 추가하고 싶을 때 또 이 노가다를 하라고?
//어림도 없지~ constructor function 만들어버리기~
console.log(person4); //출력 잘되죠?
次のコード接続
Constructor function function Person(name, age) {
//this = {};
this.name = name;
this.age = age;
// return this;
//주석으로 달아놓은 요 두 코드가 생략된 거에요!!
}
in operator: property existence check (key in obj) // 해당하는 key가 object 안에 있는지
console.log('name' in comet);
console.log('age' in comet);
console.log('riot' in comet); //false겠죠? 정의되지 않은 property거든요
console.log(comet.riot); // undefined나올 거에요
for..in vs for..of // for(key in obj)
console.clear(); //요건 그냥 콘솔창의 이전 출력들 다 지우는 코드
for (key in comet) {
console.log(key);
}
// for (value of iterable)
// 배열과 같이 순차적인 거에서 사용
const array = [1, 2, 4, 5];
for (value of array) {
console.log(value);
}
Fun cloning // Object.assign(dest, [obj1, obj2, obj3...])
const user = { name: 'comet', age: 21 };
const user2 = user;
//user은 name, age를 가르키는 ref를 가르킨다
//user2에 user가 할당됐으니 user2에도 같은 name, age를 가르키는 ref가 할당된다
user2.name = 'coder';
//따라서 이처럼 user2.name을 변경하면 user의 ref이 가르키는 name과 동일한 변수의 값이 바뀌므로
console.log(user);
//user.name도 'coder'로 바뀌게 된다
// old way
// new way
Reference
この問題について(第JS-6日(object)), 我々は、より多くの情報をここで見つけました
https://velog.io/@khsfun0312/JS-6일차object
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const person1 = { name: 'bob', age: 7 };
const person2 = { name: 'james', age: 14 };
const person3 = { name: 'steve', age: 81 };
const person4 = new Person('comet', 21);
//person 4를 추가하고 싶을 때 또 이 노가다를 하라고?
//어림도 없지~ constructor function 만들어버리기~
console.log(person4); //출력 잘되죠?
function Person(name, age) {
//this = {};
this.name = name;
this.age = age;
// return this;
//주석으로 달아놓은 요 두 코드가 생략된 거에요!!
}
in operator: property existence check (key in obj) // 해당하는 key가 object 안에 있는지
console.log('name' in comet);
console.log('age' in comet);
console.log('riot' in comet); //false겠죠? 정의되지 않은 property거든요
console.log(comet.riot); // undefined나올 거에요
for..in vs for..of // for(key in obj)
console.clear(); //요건 그냥 콘솔창의 이전 출력들 다 지우는 코드
for (key in comet) {
console.log(key);
}
// for (value of iterable)
// 배열과 같이 순차적인 거에서 사용
const array = [1, 2, 4, 5];
for (value of array) {
console.log(value);
}
Fun cloning // Object.assign(dest, [obj1, obj2, obj3...])
const user = { name: 'comet', age: 21 };
const user2 = user;
//user은 name, age를 가르키는 ref를 가르킨다
//user2에 user가 할당됐으니 user2에도 같은 name, age를 가르키는 ref가 할당된다
user2.name = 'coder';
//따라서 이처럼 user2.name을 변경하면 user의 ref이 가르키는 name과 동일한 변수의 값이 바뀌므로
console.log(user);
//user.name도 'coder'로 바뀌게 된다
// old way
// new way
Reference
この問題について(第JS-6日(object)), 我々は、より多くの情報をここで見つけました
https://velog.io/@khsfun0312/JS-6일차object
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 해당하는 key가 object 안에 있는지
console.log('name' in comet);
console.log('age' in comet);
console.log('riot' in comet); //false겠죠? 정의되지 않은 property거든요
console.log(comet.riot); // undefined나올 거에요
// for(key in obj)
console.clear(); //요건 그냥 콘솔창의 이전 출력들 다 지우는 코드
for (key in comet) {
console.log(key);
}
// for (value of iterable)
// 배열과 같이 순차적인 거에서 사용
const array = [1, 2, 4, 5];
for (value of array) {
console.log(value);
}
Fun cloning // Object.assign(dest, [obj1, obj2, obj3...])
const user = { name: 'comet', age: 21 };
const user2 = user;
//user은 name, age를 가르키는 ref를 가르킨다
//user2에 user가 할당됐으니 user2에도 같은 name, age를 가르키는 ref가 할당된다
user2.name = 'coder';
//따라서 이처럼 user2.name을 변경하면 user의 ref이 가르키는 name과 동일한 변수의 값이 바뀌므로
console.log(user);
//user.name도 'coder'로 바뀌게 된다
// old way
// new way
Reference
この問題について(第JS-6日(object)), 我々は、より多くの情報をここで見つけました
https://velog.io/@khsfun0312/JS-6일차object
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// Object.assign(dest, [obj1, obj2, obj3...])
const user = { name: 'comet', age: 21 };
const user2 = user;
//user은 name, age를 가르키는 ref를 가르킨다
//user2에 user가 할당됐으니 user2에도 같은 name, age를 가르키는 ref가 할당된다
user2.name = 'coder';
//따라서 이처럼 user2.name을 변경하면 user의 ref이 가르키는 name과 동일한 변수의 값이 바뀌므로
console.log(user);
//user.name도 'coder'로 바뀌게 된다
// old way
// new way
Reference
この問題について(第JS-6日(object)), 我々は、より多くの情報をここで見つけました https://velog.io/@khsfun0312/JS-6일차objectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol