ホームページ >ウェブフロントエンド >jsチュートリアル >Js apply()の使い方を詳しく解説(コード含む)
以下は私がまとめた 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()使用,希望今后会对大家有帮助。
相关文章:
以上がJs apply()の使い方を詳しく解説(コード含む)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。