>  기사  >  웹 프론트엔드  >  Js apply() 사용법에 대한 자세한 설명(코드 포함)

Js apply() 사용법에 대한 자세한 설명(코드 포함)

亚连
亚连원래의
2018-05-18 10:05:151271검색

다음은 관심 있는 학생들을 위해 제가 정리한 Js apply() 사용법입니다.

Js 적용 메소드 상세 설명

JavaScript 함수 적용 및 호출을 처음 봤을 때 내용이 너무 흐릿하고 이해가 잘 안 됐어요. 최근 인터넷에서 적용 메소드에 대한 몇 가지 예를 담은 기사를 봤어요. 마지막으로 나는 약간의 통찰력을 얻었으며 여기에 다음 사항을 기록하고 이를 여러분과 공유하고 싶습니다. 잘못된 것이 있거나 설명이 명확하지 않은 경우 독자들이 저에게 몇 가지 의견을 제시해 주시기 바랍니다. 우리는 함께 발전할 수 있습니다..

주로 몇 가지 질문을 해결하고 싶습니다:

1. 적용과 호출의 차이점은 무엇입니까

2. 적용을 사용할 때와 호출을 사용할 때

3. Apply (일반적으로 어떤 상황에서 사용할 수 있는지)

먼저 인터넷에서 Apply와 Call의 정의를 찾아본 다음, 두 가지 방법의 의미와 사용 방법을 예제를 사용하여 설명했습니다. Function.apply(obj,args) 메소드는 두 개의 매개변수를 받을 수 있습니다.

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

args: 이것은 Function에 전달되는 배열입니다(args-- >arguments) +                                                           호출: 의미는 Apply와 동일하지만 매개변수 목록이 다릅니다. 이 개체는 함수 클래스의 이 개체를 대체합니다.

params: 매개변수 목록입니다

1.apply示例:  
<script type="text/javascript">   
/*定义一个人类*/   
function Person(name,age) {   
    this.name=name; this.age=age;   
}   
 /*定义一个学生类*/   
functionStudent(name,age,grade) {   
    Person.apply(this,arguments); this.grade=grade;   
}   
//创建一个学生类   
var student=new Student("qian",21,"一年级");   
//测试   
alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);   
//大家可以看到测试结果name:qian age:21 grade:一年级   
//学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.   
</script>

분석: Person.apply(this,

this: 객체를 생성할 때 이때의 학생을 나타냅니다.

arguments:是一个数组,也就是[“qian”,”21”,”一年级”];

또한 간단히 말해서 Student를 사용하여 Person 클래스의 내용을 실행합니다. .name 등을 사용하여 학생 객체에 속성을 생성합니다.

2.call example

Studen 함수에서 Apply를 다음과 같이 수정할 수 있습니다.

Person.call(this,name,age);

괜찮습니다

3. Apply를 사용하고 call을 사용하는 경우

객체 매개변수를 제공하는 경우 매개변수가 배열 형식인 경우 예를 들어 적용 예시에서는 매개변수 인수가 배열 형식이며, Person을 호출할 때 매개변수 목록이 일치합니다(즉, Person과 Student의 매개변수 목록의 처음 두 자리가 일치함). Apply를 사용할 수 있습니다. 내 Person의 매개변수 목록이 다음과 같을 경우(나이, 이름) Student의 매개변수 목록 (이름, 나이, 학년), 즉 매개변수 목록에서 해당 값의 위치를 ​​직접 지정하여 구현할 수 있습니다(Person.call(this,age,name,grade)

4). .apply의 또 다른 영리한 사용법

주의 깊은 사람들은 내가 Apply 메소드를 호출할 때 첫 번째 매개변수가 객체(this)이고 두 번째 매개변수가 배열 컬렉션이라는 것을 알아차렸을 것입니다.

Person을 호출할 때 그에게 필요한 것은 다음과 같습니다. 배열이 아닌데 왜 나에게 배열을 준 걸까요? 배열을 하나씩 매개변수로 구문 분석할 수 있습니다.

이것은 Apply를 영리하게 사용하면 기본적으로 배열을 매개변수 목록으로 변환할 수 있습니다([param1, param2, param3]은 param1, param2, param3)으로 변환됩니다. 프로그램을 사용하여 배열의 각 항목을 구현하는 경우 적용 기능을 사용하여 매개변수 목록으로 변환하는 데 시간이 걸릴 수 있습니다. 다음과 같은 효율적인 방법:

a) Math.max는 배열에서 가장 큰 항목을 얻을 수 있습니다

Math.max 매개 변수는 배열인 Math.max([param1, param2])를 지원하지 않지만

. Math.max(param1, param2, param3...)를 지원하므로 단지 Apply =Math.max.apply(null,array) 기능을 기반으로 var max를 풀 수 있습니다. 이렇게 하면 가장 큰 항목을 쉽게 얻을 수 있습니다. 배열에서

(apply는 배열을 매개변수로 변환하고 이를 매개변수별로 메소드에 전달합니다)

         这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去  

b)Math.min  可以实现得到数组中最小的一项  

同样和 max是一个思想 var min=Math.min.apply(null,array);  

c)Array.prototype.push 可以实现两个数组合并  

同样push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN) 所以同样也可以通过apply来装换一下这个数组,即:  

vararr1=new Array("1","2","3");   
 vararr2=new Array("4","5","6");   
Array.prototype.push.apply(arr1,arr2);

也可以这样理解,arr1调用了push方法,参数是通过apply将数组装换为参数列表的集合.  

通常在什么情况下,可以使用apply类似Math.min等之类的特殊用法:  

一般在目标函数只需要n个参数列表,而不接收一个数组的形式([param1[,param2[,…[,paramN]]]]),可以通过apply的方式巧妙地解决这个问题!  

5.总结:  

一开始我对apply 非常的不懂,最后多看了几遍,自己多敲了几遍代码,才明白了中间的道理,所以,不管做什么事情,只要自己肯动脑子,肯动手敲代码,这样一个技术就会掌握…     

还有比如第四部分得内容,巧妙的解决了实实在在存在的问题,这个肯定不是一个初学者能想到的解决方案(这个也不是我自己想的),没有对编程有一定认识的不会想到这个的,还是一句话,多积累,多学习,提升自己的能力和对编程思想的理解能力才是最关键!  

上面是我整理给大家的Js apply()使用,希望今后会对大家有帮助。

相关文章:

简单易懂,javascript自学学习笔记

在页面自动执行(加载)js的几种解决方法,详细代码解析

利用js 来判断客户端能否上网(代码附上)

위 내용은 Js apply() 사용법에 대한 자세한 설명(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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