JavaScript 내장 클래스/객체 확장
배열을 섞는 예를 들어 보겠습니다. 배열을 취하는 셔플 함수를 만들 수 있습니다.
function shuffle(arr) {
for (let i = arr.length - 1; i > 0; i--) {
const random = Math.floor(Math.random() * (i + 1));
[arr[i], arr[random]] = [arr[random], arr[i]];
}
return arr;
}
const input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(shuffle(input)); // [ 7, 8, 10, 3, 2, 9, 5, 1, 4, 6 ]
참고: 어레이를 무작위로 섞기 때문에 저와 다른 콘솔 출력을 얻을 수 있습니다.
그러나 이 셔플 메소드를 Array의 프로토타입에 추가하여 내장 메소드(
pop
, slice
, sort
로 사용할 수 있습니다.Array.prototype.shuffle = function () {
let arr = this;
for (let i = arr.length - 1; i > 0; i--) {
const random = Math.floor(Math.random() * (i + 1));
[arr[i], arr[random]] = [arr[random], arr[i]];
}
return arr;
}
const input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(input.shuffle()); // [ 2, 4, 9, 8, 5, 7, 3, 10, 6, 1 ]
이제 프로토타입에서 선언했으며
input.shuffle()
형식을 사용하여 모든 배열에서 호출할 수 있습니다.단점
많은 사람들이 내장 클래스나 객체를 확장하는 것을 권장하지 않습니다. 논란이 되는 주제입니다. 몇 가지 단점이 있습니다.
shuffle
속성을 Arrays에 가져오면 충돌이 발생합니다. slice
메서드의 동작을 변경할 수 있습니다. 다른 사람들은 내장된 방법에 의존할 수 있으므로 그렇게 하는 것은 엔터프라이즈 앱의 경우 좋은 방법이 아닙니다. 나는 조직의 많은 사람들을 위해 기능을 중단할 것입니다. Reference
이 문제에 관하여(JavaScript 내장 클래스/객체 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bhagatparwinder/extending-javascript-built-in-classes-objects-1hm6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)