찾다
웹 프론트엔드JS 튜토리얼js_javascript 스킬의 적용 메소드 사용에 대한 자세한 분석

1. 객체 상속에 대한 일반적인 접근 방식은 Object.extend를 복사하는 것입니다.
prototype.js의 구현은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

Object.extend = function(destination, source) {
for (소스의 속성) {
Destination[property ] = source[property];
}
return Destination;
}

또한 다음과 같은 또 다른 메서드가 있습니다. 물론 함수를 사용하여 호출할 수도 있습니다)

적용 메소드는 다른 객체의 메소드를 하이재킹하고 다른 객체의 속성을 상속받을 수 있습니다

Function.apply(obj, args) 메소드는 두 개의 매개변수를 받을 수 있습니다

obj: 이 개체는 Function 클래스의 이 개체를 대체합니다.

args: 이것은 함수에 매개변수로 전달되는 배열입니다(args-->arguments)

적용 데모 코드는

코드 복사 코드는

<script> <BR>function Person(name,age){ //클래스 정의, human <BR> this.name=name; //이름 <BR> this.age=age<BR> this.sayhello=function (){alert("hello")};<BR>} <BR>function Print(){ //클래스 속성 표시<BR> this.funcName="Print" <BR> this.show =function() { <BR> var msg=[];<BR> for(var key in this){ <BR> if(typeof(this[key])!="function"){<BR> msg.push ([키, ":",this[키]].join(""));<BR>                                                                                          >function 학생(이름, 나이, 학년, 학교){ //학생 클래스<BR> Person.apply(this ,arguments);<BR> Print.apply(this,arguments);<BR> this.grade=grade; //성적<BR> this.school=school //School<BR>} <BR>var p1= new Person("jake",10);<BR>p1.sayhello();<BR>var s1= new Student("tom",13,6,"Tsinghua Primary School");<BR>s1.show( );<BR>s1.sayhello();<BR>alert(s1.funcName);<BR>< /script><BR><BR><BR>학생 클래스에는 원래 메서드가 없지만 이후에는 Person.apply(this,arguments), <BR> <BR>그는 sayhello 메소드와 Person 클래스의 모든 속성을 가지고 있습니다. <BR> </script>
Print.apply(this,arguments) 후에 자동으로 show() 메소드를 얻습니다

2. Apply의 매개변수 배열을 사용하여 개선하세요

프로그램 성능 향상을 위한 Function.apply() 팁

Math.max() 함수부터 시작하겠습니다. Math.max 뒤에는 여러 매개변수가 올 수 있으며 마지막으로 모든 매개변수 중 최대값을 반환합니다.

예를 들어

alert(Math.max(5,8)) //8

alert(Math.max(5,7,9,3,1,6)) //9

그러나 대부분의 경우 배열에서 가장 큰 요소를 찾아야 합니다.



코드 복사

코드는 다음과 같습니다.var arr=[5,7,9 ,1] alert(Math.max(arr)) // 이는 불가능합니다. 꼭 이렇게 써주세요
함수 getMax(arr){
var arrLen=arr.length;
for(var i=0,ret=arr[0];i ret=Math. max(ret,arr[i]);   }

return ret;
}


이런 식으로 작성하는 것은 번거롭고 비효율적입니다. Apply를 사용한다면 코드를 보세요:



코드를 복사하세요
코드는 다음과 같습니다: function getMax2(arr ){ return Math.max.apply(null,arr);}

두 코드 조각은 동일한 목적을 달성하지만 getMax2가 훨씬 더 우아하고 효율적이며 간결합니다.

또 다른 예는 배열의 푸시 방법입니다.
var arr1=[1,3,4];
var arr2=[3,4,5];

arr2를 확장한 다음 arr1에 하나씩 추가하고 마지막으로 arr1=[1,3,4,3,4,5]
arr1.push(arr2)를 사용하면 분명히 작동하지 않습니다. . 이렇게 하면 [1,3,4,[3,4,5]]

를 얻게 됩니다.

루프를 사용하여 하나씩 푸시할 수만 있습니다(물론 arr1.concat(arr2)도 사용할 수 있지만 concat 메서드는 arr1 자체를 변경하지 않습니다)

코드 복사 코드는 다음과 같습니다.

var arrLen=arr2.length
for(var i=0;i arr1 .push(arr2[i]);
}

Apply가 있어서 일이 너무 단순해졌습니다
Array.prototype.push.apply( arr1,arr2)
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何使用JS和百度地图实现地图平移功能如何使用JS和百度地图实现地图平移功能Nov 21, 2023 am 10:00 AM

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

如何使用JS和百度地图实现地图热力图功能如何使用JS和百度地图实现地图热力图功能Nov 21, 2023 am 09:33 AM

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

js字符串转数组js字符串转数组Aug 03, 2023 pm 01:34 PM

js字符串转数组的方法:1、使用“split()”方法,可以根据指定的分隔符将字符串分割成数组元素;2、使用“Array.from()”方法,可以将可迭代对象或类数组对象转换成真正的数组;3、使用for循环遍历,将每个字符依次添加到数组中;4、使用“Array.split()”方法,通过调用“Array.prototype.forEach()”将一个字符串拆分成数组的快捷方式。

如何使用JS和百度地图实现地图多边形绘制功能如何使用JS和百度地图实现地图多边形绘制功能Nov 21, 2023 am 10:53 AM

如何使用JS和百度地图实现地图多边形绘制功能在现代网页开发中,地图应用已经成为常见的功能之一。而地图上绘制多边形,可以帮助我们将特定区域进行标记,方便用户进行查看和分析。本文将介绍如何使用JS和百度地图API实现地图多边形绘制功能,并提供具体的代码示例。首先,我们需要引入百度地图API。可以利用以下代码在HTML文件中导入百度地图API的JavaScript

js中new操作符做了哪些事情js中new操作符做了哪些事情Nov 13, 2023 pm 04:05 PM

js中new操作符做了:1、创建一个空对象,这个新对象将成为函数的实例;2、将新对象的原型链接到构造函数的原型对象,这样新对象就可以访问构造函数原型对象中定义的属性和方法;3、将构造函数的作用域赋给新对象,这样新对象就可以通过this关键字来引用构造函数中的属性和方法;4、执行构造函数中的代码,构造函数中的代码将用于初始化新对象的属性和方法;5、如果构造函数中没有返回等等。

用JavaScript模拟实现打字小游戏!用JavaScript模拟实现打字小游戏!Aug 07, 2022 am 10:34 AM

这篇文章主要为大家详细介绍了js实现打字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

php可以读js内部的数组吗php可以读js内部的数组吗Jul 12, 2023 pm 03:41 PM

php在特定情况下可以读js内部的数组。其方法是:1、在JavaScript中,创建一个包含需要传递给PHP的数组的变量;2、使用Ajax技术将该数组发送给PHP脚本。可以使用原生的JavaScript代码或者使用基于Ajax的JavaScript库如jQuery等;3、在PHP脚本中,接收传递过来的数组数据,并进行相应的处理即可。

js是什么编程语言?js是什么编程语言?May 05, 2019 am 10:22 AM

js全称JavaScript,是一种具有函数优先的轻量级,直译式、解释型或即时编译型的高级编程语言,是一种属于网络的高级脚本语言;JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式,如函数式编程。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.