var stdout = document.getElementById("stdout");
 var Kitten = function () {};
 var mii = new Kitten();
 stdout.innerHTML += "mii.constructor : " + mii.constructor  + "<br/>"; // function () {};
 
 stdout.innerHTML += "mii has? : " +
 mii.hasOwnProperty( "constructor" ) + "<br/>"; // false
 
 stdout.innerHTML += "Kitten has? : " +
 Kitten.hasOwnProperty( "constructor" ) + "<br/>"; // false
 
 stdout.innerHTML += "Kitten.prototype has? : " +
 Kitten.prototype.hasOwnProperty( "constructor" ) + "<br/>"; // true
 
 // 함수를 생성한 시점에서 설정되어 있는 모습.
 var Dog = function () {};
 stdout.innerHTML += "Dog.prototype has? : " +
 Dog.prototype.hasOwnProperty("constructor") + "<br/>"; // true
 
 
 // 그래서 prototype를 전부 덧쓰기하면 사라진다.
 var Penguin = function () {};
 stdout.innerHTML += "Penguin.prototype constructor : " +
 Penguin.prototype.constructor + "<br/>"; // function () { }
 Penguin.prototype = {
     hoge: function(){}
 }
 stdout.innerHTML += "Penguin.prototype constructor -2 : " +
 Penguin.prototype.constructor + "<br/>"; // function Object() { [native code] }


 var EmperorPenguin = function () {};
 stdout.innerHTML += "EmperorPenguin.prototype constructor : " +
 EmperorPenguin.prototype.constructor + "<br/>"; // function () { }
 EmperorPenguin.prototype = new Penguin();
 stdout.innerHTML += "EmperorPenguin.prototype constructor -2 : " +
 EmperorPenguin.prototype.constructor + "<br/>"; // function Object() { [native code] }
 
 
 var Bull = function ( name ) {
     this.name = name;
 };
 Bull.prototype = {
     constructor: Bull.prototype.constructor, // 카피해 둔다.
     equals : function( that ) {
         return this.name == that.name;
     }
 };
 
 var Bear = function ( name ) {
     this.name = name;
 }
 Bear.prototype.equals = function( that ) { // 덧쓰기하지 않는다.
     return this.name == that.name
         && this.constructor == that.constructor;
 }
 
 var bull = new Bull("a");
 var bear = new Bear("a");
 // Bull의 equals는 파생도를 체크하지 않기 때문에, name 프롭퍼티의 값이 같으면 true를 돌려준다.
 stdout.innerHTML += bull.equals(bear) + "<br/>"; // true
 // Bear의 equals는 파생도를 체크한다.name 프롭퍼티의 값이 같않아서 true가 되지 않는다.
 stdout.innerHTML += bear.equals(bull) + "<br/>"; // false


출처: http://faidcy.tistory.com/67
Posted by 백구씨쥔장
,