생활코딩 JavaScript 객체지향 프로그래밍 (4)

2022. 3. 23. 22:55·Web/JavaScript

 


객체 간의 상속

var superObj = {superVal: 'super'};
var subObj = {subVal: 'sub'};

subObj.__proto__ = superObj;

console.log('subObj.subVal =>', subObj.subVal);
console.log('subObj.superVal =>', subObj.superVal);

//.__proto__ : subObj의 부모를 superObj로!
//             찾았는데 없다면, 부모에서 가져다 씀.

subObj.superVal = 'sub';
console.log('superObj.superVal =>', superObj.superVal);

// 자식 객체값을 바꿔도, 프로토 값은 바뀌지 않음. (얕은 복사같은 느낌!)

 

// .bind()

// bind: 함수의 this 즉 객체가 고정된 새로운 함수를 만들어 낸다.

var kim = {name:'kim', first:10, second:20}
var lee = {name:'lee', first:10, second:10}

function sum(prefix){
    return prefix+(this.first+this.second);
}

// sum();
console.log("sum.call(kim)", sum.call(kim, '=> ')); //apply
console.log("lee.call(kim)", sum.call(lee, ': '));

var kimSum = sum.bind(kim, '-> '); 
// 새로운 함수 생성(sum()에는 영향 X). this값을 ()안의 객체로 고정시킨 채!
console.log('kimSum()', kimSum());

 

// .call()

/*
call: 함수를 호출할때마다 this의 값을 내가 원하는 객체로 지정해서 실행시켜줌.
모든 함수가 가지고 있는 내장 함수.
*/


var kim = {name:'kim', first:10, second:20}
var lee = {name:'lee', first:10, second:10}

function sum(prefix){
    // this => 객체
    return prefix+(this.first+this.second);
}

// sum();
console.log("sum.call(kim)", sum.call(kim, '=> ')); //apply
console.log("lee.call(kim)", sum.call(lee, ': '));

 

prototype vs __proto__

function Person(name, fisrt, second) {
    this.name = name;
    this.first = fisrt;
    this.second -second;
}

// Person, Person's prototype

Person.prototype.sum = function(){};

var kim = new Person('kim', 10, 20);
// => __proto__, name, first, second
var kim = new Person('kim', 10, 10);
// => __proto__, name, first, second

console.log(kim.name);
console.log(kim.sum()); // kim에 없음 => __proto__ => proto

 

 


 

 

객체 간의 상속 - JavaScript 객체 지향 프로그래밍

수업소개 JavaScript는 객체(인스턴스)와 객체 간의 상속 관계를 자유롭게 설정할 수 있습니다. 이 수업에서는 클래스가 아닌 객체를 통해서 상속하는 방법을 알아봅니다.  강의1 자바스크립트의

opentutorials.org

 

저작자표시 (새창열림)

'Web > JavaScript' 카테고리의 다른 글

자바스크립트 기초  (0) 2023.05.11
생활코딩 JavaScript 객체지향 프로그래밍 (3)  (0) 2022.03.06
생활코딩 JavaScript 객체지향 프로그래밍 (2)  (0) 2022.02.24
생활코딩 JavaScript 객체지향 프로그래밍 (1)  (0) 2022.02.12
생활코딩 JavaScript OT  (0) 2021.04.09
'Web/JavaScript' 카테고리의 다른 글
  • 자바스크립트 기초
  • 생활코딩 JavaScript 객체지향 프로그래밍 (3)
  • 생활코딩 JavaScript 객체지향 프로그래밍 (2)
  • 생활코딩 JavaScript 객체지향 프로그래밍 (1)
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (14)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    Python
    코드트리
    파이썬
    OS
    자바스크립트
    운영체제
    React
    자바기반응용프로그래밍
    C++
    네트워크
    DP
    백준
    Java
    통계학
    BFS
    그리디
    JavaScript
    생활코딩
    github
    BAEKJOON
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
생활코딩 JavaScript 객체지향 프로그래밍 (4)
상단으로

티스토리툴바