Object.create()란 무엇인가요?
Object.create(proto [, PropertiesObject ])는 E5에서 제안된 새로운 객체 생성 방법입니다. 첫 번째 매개변수는 상속할 프로토타입입니다. 두 번째 매개변수는 null을 전달할 수 있습니다. 매개변수 매개변수는 객체의 속성 설명자입니다. 이 매개변수는 선택 사항입니다.
예:
function Car (desc) { this.desc = desc; this.color = "red"; } Car.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; //instantiate object using the constructor function var car = Object.create(Car.prototype); car.color = "blue"; alert(car.getInfo());
결과는 다음과 같습니다.정의되지 않은 파란색
1. PropertiesObject 매개변수에 대한 자세한 설명: (기본값은 false)
데이터 속성:
액세스 속성:
2. 예시: 예시를 보시면 사용법을 아실 수 있습니다.
<!DOCTYPE html> <html> <head> <title>yupeng's document </title> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> var obj = { a:function(){ console.log(100) }, b:function(){ console.log(200) }, c:function(){ console.log(300) } } var newObj = {}; newObj = Object.create(obj,{ t1:{ value:'yupeng', writable:true }, bar: { configurable: false, get: function() { return bar; }, set: function(value) { bar=value } } }) console.log(newObj.a()); console.log(newObj.t1); newObj.t1='yupeng1' console.log(newObj.t1); newObj.bar=201; console.log(newObj.bar) function Parent() { } var parent = new Parent(); var child = Object.create(parent, { dataDescriptor: { value: "This property uses this string as its value.", writable: true, enumerable: true }, accessorDescriptor: { get: function () { return "I am returning: " + accessorDescriptor; }, set: function (val) { accessorDescriptor = val; }, configurable: true } }); child.accessorDescriptor = 'YUPENG'; console.log(child.accessorDescriptor); var Car2 = function(){ this.name = 'aaaaaa' } //this is an empty object, like {} Car2.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; var newCar = new Car2(); var car2 = Object.create(newCar, { //value properties color: { writable: true, configurable:true, value: 'red' }, //concrete desc value rawDesc: { writable: true, configurable:true, value: 'Porsche boxter' }, // data properties (assigned using getters and setters) desc: { configurable:true, get: function () { return this.rawDesc.toUpperCase(); }, set: function (value) { this.rawDesc = value.toLowerCase(); } } }); car2.color = 'blue'; console.log(car2.getInfo()); car2.desc = "XXXXXXXX"; console.log(car2.getInfo()); console.log(car2.name); </script> </body> </html>
결과는 다음과 같습니다.
100
유펭
유펭1
201
돌아왔습니다: YUPENG
파란색 포르쉐 박스터
파란색 XXXXXXXX
아아아아아
위 내용은 JavaScript의 새로운 객체 생성 방법인 Object.create()에 대한 자세한 소개입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.