>웹 프론트엔드 >프런트엔드 Q&A >자바스크립트는 다형성을 지원하나요?

자바스크립트는 다형성을 지원하나요?

WBOY
WBOY원래의
2022-07-28 17:11:402158검색

JavaScript는 다형성을 지원합니다. 다형성은 다양한 데이터 유형의 엔터티에 대한 통합 인터페이스를 제공하는 것을 의미합니다. 다형성 유형은 지원되는 작업을 다른 유형의 값에 적용할 수 있음을 의미합니다. 결과.

자바스크립트는 다형성을 지원하나요?

이 튜토리얼의 운영 환경: Windows 10 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

Javascript는 다형성을 지원합니다

프로그래밍 언어와 유형 이론에서 다형성(영어: 다형성)은 다양한 데이터 유형의 엔터티에 대해 통합된 인터페이스를 제공하는 것을 의미합니다. 다형성 유형(영어: 다형성 유형)은 자신이 지원하는 연산을 다른 유형의 값에 적용할 수 있습니다.

의미

동일한 작업이 다른 개체에 적용되어 다른 해석과 다른 실행 결과가 발생할 수 있습니다.

예를 들어 고양이와 개가 있는데 그들에게 동일한 명령을 내립니다." "활", 고양이는 야옹거리고 개는 짖기 때문에 짖도록 두는 것은 동일한 작업이며 짖는 소리에 따라 실행 결과가 달라집니다.

예를 들어

감독이 액션을 시작하라고 하면 배우들은 각자 해야 할 일을 하게 되고,

감독이 배우들에게 한 명씩 뭘 하라고 지시하는 대신

다형성의 가장 근본적인 장점은 더 이상 개체에게 "당신은 어떤 유형입니까?"라고 묻고 얻은 대답에 따라 개체의 특정 동작을 호출할 필요가 없습니다. 동작을 호출하기만 하면 다른 모든 다형성 메커니즘이 준비됩니다.

// 多态背后的思想是将 做什么 和 谁去做 分离
// 也就是将不变的事物 与 可能改变的事物 分离出来
// 先来一段反例的多态代码
var makeSound = function (animal) {
if (animal instanceof Duck) {
console.log('嘎嘎嘎');
} else if (animal instanceof Chicken) {
console.log('咯咯咯');
}
}
var Duck = function () { };
var Chicken = function () { };
makeSound(new Duck());
makeSound(new Chicken());
// 此时如果加一个狗,还需要再去改源代码

// 首先把不变的部分隔离出来
var makeSound = function (animal) {
animal.sound();
}
//然后把可变的部分各自封装起来,
var Duck = function () { }
Duck.prototype.sound = function () {
console.log("嘎嘎嘎");
}
var Chicken = function () { }
Chicken.prototype.sound = function () {
console.log("咯咯咯");
}
makeSound(new Duck());
makeSound(new Chicken());
//如果有一天改需求了,加一个动物
//简单追加一条代码就可以啦
var Dog = function () { }
Dog.prototype.sound = function () {
console.log("汪汪汪");
}
makeSound(new Dog());

실제 사례

// 实际案例
var googleMap = {
show: function () {
console.log('开始渲染谷歌地图');
}
}
var baiduMap = {
show: function () {
console.log('开始渲染百度地图');
}
}
var renderMap = function (map) {
if (map.show instanceof Function) {
map.show();
}
}
renderMap(googleMap)
[관련 권장 사항: javascript 비디오 튜토리얼

,

web front-end

]

위 내용은 자바스크립트는 다형성을 지원하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.