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