ホームページ  >  記事  >  ウェブフロントエンド  >  Js apply()の使い方を詳しく解説(コード含む)

Js apply()の使い方を詳しく解説(コード含む)

亚连
亚连オリジナル
2018-05-18 10:05:151270ブラウズ

以下は私がまとめた Js apply() の使用法です。興味のある学生はご覧ください。

Js apply メソッドの詳細な説明

JavaScript 関数の apply と call を初めて見たとき、非常に曖昧で理解できませんでした。最近、apply メソッドの例がいくつか掲載されている記事をインターネット上で見ました。最後に、私はここで以下のメモを作成し、何か間違っている場合や説明が明確でない場合は、読者にコメントをいただければ幸いです。私たちは一緒に改善することができます。

主にいくつかの質問を解決したいと思います:

1. apply と call の違いは何ですか

2. apply と call をいつ使用するか

3. apply (一般的にどのような状況で apply が使用できるか)

まず、apply と call の定義をインターネットから調べてから、例を使用してこれら 2 つのメソッドの意味と使用方法を説明しました

。 Function.apply(obj,args) メソッドは 2 つのパラメータを受け取ることができます

obj: このオブジェクトは Function クラスのこのオブジェクトを置き換えます

args: これは Function に渡される配列です (args-- >arguments) ️ call: apply と意味は同じですが、このオブジェクトは Function クラスの this オブジェクトを置き換えます

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, argument);

this: オブジェクトを作成するとき、それはこの時点で学生を表します

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

また、簡単に言うと、person クラスのコンテンツを実行するには、次のようなステートメントがあります。 .name などを追加して、学生オブジェクトに属性を作成します。

2.call 例

Studen 関数では、apply を次のように変更できます。 apply を使用し、どのような場合に call を使用するか

オブジェクトパラメータを与える場合、パラメータが配列の形式である場合 たとえば、apply の例では、パラメータ引数は配列型で渡されます。 Person を呼び出すときにパラメーター リストに一貫性がある (つまり、Person と Student のパラメーター リストの最初の 2 桁が一貫している) 場合は、 apply を使用できます。私の Person のパラメーター リストが次のような場合 (年齢、名前)、および Student のパラメーター リストis (名前, 年齢, 学年)、これは call で実装できます。つまり、パラメーター リスト内の対応する値の位置を直接指定します。 apply のその他の賢い使い方

注意深い人は、apply メソッドを呼び出すとき、最初のパラメータはオブジェクト (this) で、2 番目のパラメータは配列コレクションであることに気づいたかもしれません

Person を呼び出すときに必要なのは、配列ではありませんが、なぜ彼は私に配列を与えたのでしょうか? 配列を 1 つずつパラメータに解析できます

これは、apply を賢く使用すると、デフォルトで配列をパラメータ リストに変換できます ([param1, param2, param3] は param1、param2、param3 に変換されます)。プログラムを使用して配列の各項目を実装する場合、この apply 機能を使用してパラメータのリストに変換するのに時間がかかることがあります。次の効率的な方法:

a) Math.max は配列

内の最大の項目を達成できます。これは、Math.max パラメーターが配列

である Math.max([param1, param2]) をサポートしていないためですが、 Math.max(param1, param2, param3...) をサポートしているため、今 =Math.max.apply(null,array) を適用する機能に基づいて var max を解くことができ、この方法で最大の最大値を簡単に取得できます。配列内の項目

(apply は配列をパラメーターに変換し、パラメーターを 1 つずつメソッドに渡します)

         这块在调用的时候第一个参数给了一个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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。