TIL [Object.create()]
10701 ワード
Object.create()の例
let Human = function(name){ // Human함수 생성
this.name = name;
}
Human.prototype.sleep = function(){}; // Human함수의 프로토 타입 메서드로 sleep을 생성
let steve = new Human('steve'); // steve라는 인스턴스 생성
let Student = function(name){ // Student함수 생성
this.name = name;
}
Student.prototype.learn = function(){}; // Student함수의 프로토 타입 메서드로 learn 생성
let john = new Student('john'); // john이라는 인스턴스 생성
john.learn(); // 가능 -> Student의 인스턴스 o
john.sleep(); // 불가능 -> Human의 인스턴스 x
じゃあジョンもしsleep()を可能にしたいなら、どうすればいいですか?johnをHumanとStudentのインスタンスにするにはどうすればいいですか?let Student = function(name){
Human.call(this, name);
}
Student.prototype = Object.create(Human.prototype); // Human.prototype을 기반으로 한 객체를 Student.prototype에 할당해줘!
Student.prototype.constructor = Student; // 이걸 해줘야 된다.
Student.prototype.learn = function(){}; // 그 후에 다시 learn이라는 메서드를 Student.prototype에 추가
john instanceof Student // true
john instanceof Human // true
めちゃくちゃで、見ると疲れます.これらの文法はclassですべて解決しました.class Human{
constructor(name){
this.name = name;
}
sleep(){
console.log('zzz');
}
}
let steve = new Human('steve');
class Student extends Human{
constructor(name){
super();
this.name = name;
}
learn(){
console.log('공부중...');
}
}
let john = new Student('john');
john.learn();
john.sleep();
john instanceof Human; // true
john instanceof Student // true
john.__proto__ === Student.prototype // true
john.__proto__.__proto__ === Human.prototype // true
一目でわかるように、きれいで簡単です.説明によると、classを使用する傾向は現在より多く(簡単で便利であるため)、以前の例では使いにくいだけでなく、消える傾向があるのは幸いなことだ.Reference
この問題について(TIL [Object.create()]), 我々は、より多くの情報をここで見つけました https://velog.io/@dlrbwls0302/TIL-Object.createテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol