宝哥软件园

在JS中用变量保存参数对象的方法

编辑:宝哥软件园 来源:互联网 时间:2021-10-28

迭代器是一个可以按顺序访问数据集的对象。典型的应用编程接口是下一个方法。方法获取序列中的下一个值。

迭代器示例

标题:我希望编写一个方便的函数,它可以接收任意数量的参数,并为这些值构建一个迭代器。

测试代码:

var it=值(、);it . next();//it . next();//it . next();//分析:由于values函数需要接收任意数量的参数,因此需要使用上一节提到的方法来构建一个参数可变的函数。然后用内部的迭代器对象遍历参数对象的元素。

初步编码

函数值(){var i=,n=arguments.length返回{ hasnext : function(){ return in;},next : function(){ if(this . HasNext()){返回参数[I];}抛出新错误('已到达结尾');}}}使用上述测试代码进行测试。

var it=值(、);it . next();//undefinedit . next();//undefinedit . next();//未定义的错误分析。

代码运行结果不正确,下面分析初始编码程序。

函数值(){var i=,n=arguments.length//这里没有错误,参数是内置对象return { hasnext : function(){ return in;},next : function(){ if(this . HasNext()){返回参数[I];//错误出现在这里,参数是下一个方法函数的内置对象。}抛出新错误('已到达结尾');}}}这里的错误引用就像另一个头疼的问题,这个。在处理指向这个的时候,我们通常使用变量并保存正确的这个。然后在别处使用这个变量。然后arguments对象的解出来,用一个变量存储,这样arguments对象的引用就没问题了。

重新编码

函数值(){var i=,n=自变量. length,arg=自变量;返回{ hasnext : function(){ return in;},next : function(){ if(this . HasNext()){ return arg[I];}抛出新错误('已到达结尾');}}}运行测试代码。

var it=值(、);it . next();//it . next();//it . next();//结果和预期的一样。

给出提示

引用参数时,注意函数的嵌套级别。

将显式范围引用绑定到参数变量,以便可以在嵌套函数中引用它。

附录一:迭代器。

迭代器,有时也叫游标,是一种软件设计的编程模式,是一个可以在容器上遍历的接口,所以设计人员不需要关心容器的内容。

迭代器UML类图。

迭代器js的实现。

设计模式我知道一点,但是在具体的项目中,工厂模式很多,其他的很少使用。这里有一个简单的实现。错的欢迎交流。

代码如下

函数List(){ this . data=[];} list . prototype={ add : function(){ var args=[]. slice . call(arguments)this . data=this . data . concat(args);},remove : function(I){ this . data . splice(I,},Iterator : function(){返回新的Iterator(this);} }函数Iterator(list){ this . list=list;this . cur=;};iterator . prototype={ HasNext : FuncTion(){ return this . curt his . list . data . length-;},next : function(){ if(this . HasNext()){ return this . list . data[this . cur];}抛出新错误('都结束了~ ');},remove : function(){ this . list . remove(this . cur);} } var List=new List();var it=list . iterator();list.add(、);it . next();//it . next();//it . next();//以上就是边肖介绍的JS中用变量保存arguments对象的方法,希望对大家有帮助!

更多资讯
游戏推荐
更多+