extend() 메소드는 두번째 인자로 지정한 오브젝트의 모든 것을 첫 번째 인자의 오브젝트에 복사한다.
첫번째와 두번째 오브젝트에 같은 이름의 프로퍼티가 있다면 오버라이드가 된다.
prototype.js 에 구현된 Object.extend() 의 소스를 살펴보면 아래와 같다.
for (var property in source)
destination[property] = source[property];
for(in) 루프를 source 오브젝트의 프로퍼티 수만큼 반복한다. 루프가 반복될 때마다 property 변수에 source 오브젝트의
프로퍼티 이름이 순차적으로 설정되며, source 오브젝트의 프로퍼티 값을 destination[property] 으로 복사하게 된다.
프로퍼티를 복사한다는 것은 곧 프로퍼티가 가지고 있는 모든 걸 복사한다는 의미이다.
Object.extend() 메소드는 여러 오브젝트에서 상속받을 수 있으며, 상속을 받았던 오브젝트로 다시 상속을 해줄 수 있다.
실제 사용 예]
첫번째와 두번째 오브젝트에 같은 이름의 프로퍼티가 있다면 오버라이드가 된다.
prototype.js 에 구현된 Object.extend() 의 소스를 살펴보면 아래와 같다.
Object.extend = function(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
};
for (var property in source)
destination[property] = source[property];
return destination;
};
for (var property in source)
destination[property] = source[property];
for(in) 루프를 source 오브젝트의 프로퍼티 수만큼 반복한다. 루프가 반복될 때마다 property 변수에 source 오브젝트의
프로퍼티 이름이 순차적으로 설정되며, source 오브젝트의 프로퍼티 값을 destination[property] 으로 복사하게 된다.
프로퍼티를 복사한다는 것은 곧 프로퍼티가 가지고 있는 모든 걸 복사한다는 의미이다.
Object.extend() 메소드는 여러 오브젝트에서 상속받을 수 있으며, 상속을 받았던 오브젝트로 다시 상속을 해줄 수 있다.
실제 사용 예]
//객체를 생성하여 확장하기
var person = {name: 'utsman'};
var detail = {address: 'seoul'};
Object.extend(person, detail);
alert('name=' + person.name); // result====>> name=utsman
alert('address=' + person.address); // result====>>address=seoul
//내장 객체 확장하기
Object.extend(
String.prototype, {
escapeQuot: function () {
return this.gsub('"', '"').gsub("'", ''');
}
}
var person = {name: 'utsman'};
var detail = {address: 'seoul'};
Object.extend(person, detail);
alert('name=' + person.name); // result====>> name=utsman
alert('address=' + person.address); // result====>>address=seoul
//내장 객체 확장하기
Object.extend(
String.prototype, {
escapeQuot: function () {
return this.gsub('"', '"').gsub("'", ''');
}
}
);
var str = '그가 말했다 "누구냐? 넌"';
alert(str.escapeQuot()); // result====>> 그가 말했다 "누구냐? 넌"
var str = '그가 말했다 "누구냐? 넌"';
alert(str.escapeQuot()); // result====>> 그가 말했다 "누구냐? 넌"