다음은 관심 있는 학생들을 위해 제가 정리한 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()使用,希望今后会对大家有帮助。
相关文章:
위 내용은 Js apply() 사용법에 대한 자세한 설명(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!