뭐야, 믹신스?
소개
내 블로그의 모든 블로그 게시물을 통해 우리는 프로토타입 상속이 JavaScript에서 합리적으로 잘 작동한다는 것을 깨달았습니다. 우리는 알고 있습니다. 그러나 각 개체에는 [[프로토타입]]이 하나만 있습니다. 이는 개체가 다른 하나의 개체에서만 상속할 수 있음을 의미합니다. 하나의 다른 클래스에서만 확장할 수 있으므로 클래스도 마찬가지입니다. JavaScript는 다중 상속을 지원하지 않습니다.
mixin can은 mixin 클래스에서 상속하지 않고 클래스에서 사용할 수 있는 메서드가 있는 클래스입니다. 상속을 사용하지 않고 객체에 속성을 추가하는 방법입니다.
이론상으로는 다음과 같이 보일 것입니다.
class B extends A {}
class B extends A with M1 {}
class B extends A with M1, M2, M3 {}
믹스인의 완벽한 비법 소스는
Object.assign
에 있습니다!구현
개체의 경우
cconst employee = {
name: "John Smith",
age: 30,
gender: "male"
}
const payroll = {
duration: "monthly",
amount: 7000,
currency: "dollars"
}
const benefits = {
retirement: true,
savings: true,
health: true,
dental: false
}
const employeeProfile = Object.assign({}, employee, payroll, benefits);
console.log(employeeProfile);
콘솔의 출력은 다음과 같습니다.
{ name: 'John Smith',
age: 30,
gender: 'male',
duration: 'monthly',
amount: 7000,
currency: 'dollars',
retirement: true,
savings: true,
health: true,
dental: false }
예, 이것이 믹스인이 하는 일입니다. 이를 통해 서로 다른 객체의 속성을 단일 객체로 결합할 수 있습니다(가장 간단한 용어로).
Object.assign
는 하나 이상의 소스 개체에서 대상 개체로 모든 열거 가능한 속성을 복사합니다. 첫 번째 인수는 대상 개체이고 그 뒤에 모든 소스 개체가 있습니다.수업용
let employeeDetails = {
returnName() {
console.log(`The employee is ${this.name}`);
},
subscribesToDental () {
console.log(`Employee ${this.name} does ${(this.dental) ? "" : "not "}subscribe to dental benefits`);
}
};
class Employee {
name;
dental;
constructor(name, dental) {
this.name = name;
this.dental = dental;
}
}
Object.assign(Employee.prototype, employeeDetails);
new Employee("Parwinder", false).returnName();
// The employee is Parwinder
new Employee("Parwinder", false).subscribesToDental();
// Employee Parwinder does not subscribe to dental benefits
new Employee("Robert", true).subscribesToDental();
// Employee Robert does subscribe to dental benefits
🚨 자바스크립트는 이제
super
키워드 사용을 지원합니다. 믹신은 어휘적으로 바인딩되어 있으므로 super
를 지원할 수 없습니다!
Reference
이 문제에 관하여(뭐야, 믹신스?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bhagatparwinder/what-are-mixins-2a3p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)