본문 바로가기

HTML, CSS, ECMA6/자바스크립트(Java Script)

[자바스크립트] 심화1 - 객체 다루기

자바스크립트


실행 환경 {

​ ‘IDE’ : ‘Eclipse’

​ ‘Java_Version’ : ‘JDK 1.8’

​ ‘Browser’ : ‘Chrome’

}

자바스크립트 심화-1

파일명 : ex05.html

객체를 만들어서 메소드 추가하기1

var o = {
        name: '마이콜',
        age:20,
        hasProperty:function(property){
            return property in this;
        }
}

console.log(o.hasProperty('name'))
console.log(o.hasProperty('age'))
console.log(o.hasProperty('email'))

// 위에서 만든 hasProperty는 최상위로 정의된 자바스크립트 내장 기능이 있음, 다만 메소드 추가해보기 실습용.
console.log(o.hasOwnProperty('name'))
console.log(o.hasOwnProperty('age'))
console.log(o.hasOwnProperty('email'))

this로 객체 내 정보 사용, with 사용하기

// with 
var o = {
        name: '마이콜',
        age:20,
        //this를 사용하지 않으면 o객체에서의 name을 가져오지 못하며 함수 외부에서 찾게된다. 
        info1:function(){
            console.log(this.name + ":" +this.age)
        },

        // with를 통해서 각 변수마다 this를 붙여주지 않는 방식으로 작업
        info2:function(){
            with(this){
                console.log(name + ":" +age)
            }
        },

        // for문 사용 시 주의사항, 내부 반복도는 것을 var 로 선언해준다. 
        info3:function(){
            var str ='';
            for (var prop in this){
                str += (prop+ ":");
            }
            console.log(str.substring(0, str.length-1));
        }
}

o.info1();
o.info2();
o.info3();

>>마이콜:20
>>마이콜:20
>>name:age:info1:info2:info3

자바스크립트로 메뉴 select 컨트롤하기.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>리스트를 이용한 메뉴 만들기</title>
<style type="text/css">
* { margin:0; padding:0 }
body { font-family: '맑은 고딕' '돋움'; font-size:0.75em; color:#333 }
ul, ol {list-style-type:none;}

.tab-box{
    margin:20px auto;
    width: 520px;
    border: 1px solid #333; 
}
.tab-box ul li{
    float:right; 
    width:100px;
    height:22px; 
    border:1px solid  #999;
    background-color:#ccc;
    text-align:center; 
    padding-top: 5px;
    margin-right: 2px;
    border-top-left-radius:10px;
    border-top-right-radius:10px;
    cursor:pointer;
}

.tab-box ul li.selected{
    background-color:#fc6;
}
.tab-box ul li:hover{
    background-color:#fff;
}

.tab-box ul{
    height: 29px;
}

.tab-box div{
    width:516px;
    margin-top:-1px;
    border:1px solid #999;
    text-align:center;
    height:200px;
    line-height:200px;

}

</style>

<script>

var tabBox = {
    init : function(){
        var divTabBox = document.getElementsByClassName('tab-box')[0];
        var ulTabBox = divTabBox.childNodes[1];
        var lisTab = ulTabBox.getElementsByTagName('li');

        for(i = 0; i < lisTab.length; i++){
            lisTab[i].addEventListener('click', this.onTabClicked);
        }
    },
    onTabClicked : function(event){
        // click이벤트를 받은 타겟
        var liClicked = event.target;
        if(tabBox.liSelected != null){
            tabBox.liSelected.className = '';
        }
        liClicked.className='selected';
        tabBox.liSelected = this;

    }
}


window.onload = function(){
    // init함수만으로 호출하기 위해 
    tabBox.init();
}

</script>
</head>
<body>
<div class="tab-box">
    <ul>
        <li>메뉴 1</li>
        <li>메뉴 2</li>
        <li>메뉴 3</li>
        <li>메뉴 4</li>
        <li>메뉴 5</li>
    </ul>
    <div>
        탭뷰입니다.
    </div>

</div>    
</body>
</html>

####