본문 바로가기

Web/자바스크립트

자바스크립트_객체지향_object


<<이글은 생활코딩을 실습, 정리한 내용입니다. 이고잉님 감사^^>>

1#

var arr = {'name': 'jason', 'age': 20, 'city': 'Seoul' };

  Object.keys(arr)
["name", "age", "city"]

  arr.name
"jason"
  arr.age
//20
  arr.city
//"Seoul"
  arr.toS
//undefined
  arr.toString
toString() { [native code] }



2#
var arr = {'name': 'jason', 'age': 20, 'city': 'Seoul' };

  arr
Object {name: "jason", age: 20, city: "Seoul"}
  Object.keys(arr)
["name", "age", "city"]



3#
var arr = [10,20,30]
arr.toString();
"10,20,30"

var arr = {10,20,30}
arr.toString();
VM1263:2 Uncaught SyntaxError: Unexpected token ,(…)




=> 어떤 메소드가 프로토타입 소속이라는 말은?

Object.prototype.toString = function(){} : Object라는 생성자함수가 만드는 new Object() 를 실행하는 순간 생성되는 객체는(위에서는 o)  Object()의 prototype을 원형으로 한다. 그러므로 우리는 toString메소드를 사용할 수 있게 된다. 
=> toString은 객체o에 대한 메소드로 사용하게 되낟.
=> keys는 Object의 메소드로 사용한다.
=>Array()도 생성자 함수성격을 가지고 있어서 객체생성이 가능하며 객체는 Object를 공유하고 있기에 prototype프라퍼티를 갖는다. 
=> 즉, 프로타입은 toString()을 갖고 있기에 호출시는 객체뒤에 o.toString()이라고 쓴다.
=> 프로토다입이 있고 없고에 따라서 쓰는 메소드가 달라진다.
              
   

5확장#

Object.prototype.contain = function(neddle) {  // Object에 contain이라는 메소드를 추가
    for(var name in this){
        if(this[name] === neddle){
            return true;
        }
    }
    return false;
}
var o = {'name':'egoing', 'city':'seoul'}
console.log(o.contain('egoing'));
var a = ['egoing','leezche','grapittie'];
console.log(a.contain('leezche'));
 //true
 //true
 



6 #

var arr = {'name': 'jason', 'age': 20, 'city': 'Seoul' };
var arr1 = ['jasonkim','leech','jane'];

  console.log(arr.contain('jason'));
  console.log(arr1.contain('jane'));
 
//true
// true


Object.prototype.contain = function(needle){   // 
      
for(var name in this){       // this는 객체 arr과 arr1이고 name은 키값이다.
    if (this[name]== needle){           // this[name]은 밸류  jane을 넣으면 이값은 jane이된다.
        
         console.log(this[name]);
         return true;
         }
      
    }
           return false;
}

var arr = {'name': 'jason', 'age': 20, 'city': 'Seoul' };
var arr1 = ['jasonkim','leech','jane'];

  console.log(arr.contain('jason'));
  console.log(arr1.contain('jane'));
 


실행#

Object.prototype.contain = function(needle){   //
     
for(var name in this){       // this는 객체 arr과 arr1이고 name은 키값이다.
    if (this[name]== needle){           // this[name]은 밸류
       
         console.log(this[name]);
         return true;
         }
     
    }
           return false;
}

var arr = {'name': 'jason', 'age': 20, 'city': 'Seoul' };
var arr1 = ['jasonkim','leech','jane'];

  console.log(arr.contain('jason'));
  console.log(arr1.contain('jane'));
console.log(arr1.contain('jannny'));


 //jason
// true
 //jane
// true
// false

=> Object는 모든 생성자함수의 기원이기에 여기에 메소드를 추가하여 기능을 만드는것은 위험이 따른다.


'Web > 자바스크립트' 카테고리의 다른 글

칸아카데미>>SQL>>gradebook  (0) 2018.03.28
칸아카데미>>SQL>>CASE  (0) 2018.03.28
sql  (0) 2018.03.28
자바스크립트_this  (0) 2018.03.28
자바스크립트_Node객체  (0) 2018.03.28