본문 바로가기
패스트캠퍼스/자습

자바스크립트로 하는 자료구조와 알고리즘(6장) - 객체

by sunnykim91 2019. 10. 24.

객체에 속성 추가하기

let javaScriptObject = {};
let testArray = [1,2,3,4];

javaScriptObject.array = testArray;
console.log(javaScriptObject);

javaScriptObject.title = 'Algo';
console.log(javaScriptObject);

 

프로토타입 활용 상속

function ExampleClass() {
  this.name = "Javascript";
  this.sayName = function() {
    console.log(this.name);
  }
}

let example1 = new ExampleClass();
example1.sayName();

 

.prototype을 활용하여 메소드를 동적으로 추가할 수 있다.

function ExampleClass() {
  this.array = [1,2,3,4,5];
  this.name = "javascript";
}

let example1 = new ExampleClass();

ExampleClass.prototype.sayName = function () {
  console.log(this.name);
}

example1.sayName();

 

클래스의 함수들을 생성자에서 추가하거나 .prototype을 통해 추가할 수 있다.

 

생성자와 변수

 

 

해당 객체의 속성들을 다른 범위에서도 직접 접근이 가능하다.

function ExampleClass(name, size) {
  this.name = name;
  this.size = size;
}

let example1 = new ExampleClass("public", 5);
console.log(example1);

console.log(example1.name);
console.log(example1.size);

get, set 을 이용해서 접근을 제어 할 수 있다.

 

function ExampleClass(name, size) {
  let privateName = name;
  let privateSize = size;

  this.getName = () => privateName;
  this.setName = (name) => {privateName = name;};

  this.getSize = () => privateSize;
  this.setSize = (size) => {privateSize = size};
}

let example = new ExampleClass("ssss", 3);
example.setSize(12);
console.log(example.privateName);  // 직접 접근할 수 없어서 undefined
console.log(example.getName());
console.log(example.size);
console.log(example.getSize());

 

 

function Animal(name, animalType) {
  this.name = name;
  this.animalType = animalType;
}

Animal.prototype.sayName = function() {  // Animal클래스에 sayName 메소드 동적 추가
  console.log(this.name);
} 

Animal.prototype.sayAnimalType = function() { // Animal클래스에 sayAnimalType 메소드 동적 추가
  console.log(this.animalType);
} 

function Dog(name) {   // // Dog라는 클래스 생성
  Animal.call(this, name, "Dog");      // Animal함수를 호출 
}

Dog.prototype = Object.create(Animal.prototype);  // 새 객체를 만듬.

let myAnimal = new Animal("ditto", "pokemon");
myAnimal.sayName();
myAnimal.sayAnimalType();

let myDog = new Dog("candy", "dog");
myDog.sayName();
myDog.sayAnimalType();

 

반응형