자바스크립트2013. 2. 14. 14:19

[출처]- 자바스크립트 객체지향프로그래밍


* 자바스크립트 : 개체지향 기술을 이용한 고급 웹응용 프로그램 만들기

    http://msdn.microsoft.com/ko-kr/magazine/cc163419.aspx#S9

    

* Object 멤버정리

    http://www.javascriptkit.com/jsref/object.shtml    


* 클로저  ( closure )

    http://en.wikipedia.org/wiki/Closure_(computer_programming)#C.23

    

* Object 멤버정리

    http://code.google.com/p/trimpath

Posted by 선한열심
자바스크립트2013. 2. 8. 16:05

/*  3 hasOwnProperty 함수의 프로퍼티나 메서드 있는지 확인 

var msg3 = "";


// 객체 리터럴 사용법

var obj3 = {

    prop : "exist",

    change : function (){

        this.newProp = this.prop;

        delete this.prop;

    }

};


//var bool3 = obj.hasOwnProperty('멤버명');

msg3 += "\n obj3.hasOwnProperty('prop')=" + obj3.hasOwnProperty('prop');

msg3 += "\n obj3.hasOwnProperty('change')=" + obj3.hasOwnProperty('change');

obj3.change();   // () 꼭 넣어줘야 함수가 호출된다 

msg3 += "\n obj3.hasOwnProperty('prop')=" + obj3.hasOwnProperty('prop');


$('re').innerText = msg3; //msg3;


*/

Posted by 선한열심
자바스크립트2013. 2. 8. 15:56

1.  객체의 인스턴스를 생성 후 프로토타입을 추가해도 모든 인스턴스에 적용이 된다 

2. 객체에 프로토타입 객체 대체

 

var msg4 = ""; 

function Person4(name)

{

    this.name = name; 

}

  

Person4.prototype.getName = function(){ return this.name ;}; 

var mySon = new Person4('달봉이');

 

// 1.  객체의 인스턴스를 생성 후 프로토타입을 추가해도 모든 인스턴스에 적용이 된다 

Person4.prototype.nickName = '별명';

Person4.prototype.age = 6;      // Person4.age 안됨 


msg4 += "\n mySon.nickName=" + mySon.nickName  // 별명


mySon.nickName = '달봉이 별명';

msg4 += "\n mySon.nickName=" + mySon.nickName  // 달봉이 별명 

msg4 += "\n mySon.age=" + mySon.age             // 6 


mySon.age = 66;

msg4 += "\n mySon.age=" + mySon.age             // 66 


Person4.prototype.age = 6;  

msg4 += "\n mySon.age=" + mySon.age             // 66 (처음이 아니기 때문에 )

msg4 += "\n mySon.getName()=" + mySon.getName();// 달봉이


delete Person4.prototype.age;

msg4 += "\n delete Person4.prototype.age=" + Person4.prototype.age; // undefined 

msg4 += "\n mySon.age=" + mySon.age


 

msg4 += "\n\n 프로토타입 객체 대체 전 ";

for ( var item in mySon){

    msg4 += "\n mySon[" + item + "] = " + mySon[item];

}



// mySon[name] = 달봉이

// mySon[nickName] = 달봉이 별명

// mySon[age] = 66

// mySon[getName] = function (){ return this.name ;}


var personProto = {};

personProto.specises    = "human";

personProto.countOfLegs = 2;


Person4.prototype = personProto; // 기존에 추가했던 prototype은 삭제된다 


// 2. 객체에 프로토타입 객체 대체

msg4 += "\n\n 프로토타입 객체 대체 후 ";

for ( var item in mySon){

    msg4 += "\n mySon[" + item + "] = " + mySon[item];

}

                        

// mySon[name] = 달봉이       

// mySon[nickName] = 달봉이 별명

// mySon[age] = 66         var t5 = new Person4('t5');

// mySon[getName] = function (){ return this.name ;}var ar5 = [];

var t5 = new Person4('t5');

for ( var item in t5){

   msg4 += "\n t5[" + item + "] = " + t5[item];

}                                 


// t5[name] = t5

// t5[specises] = human

// t5[countOfLegs] = 2

 


for ( var item in Person4.prototype){

    msg4 += "\n Person4.prototype item = " +  item;

// Person4.prototype item = specises

// Person4.prototype item = countOfLegs

Posted by 선한열심