手机版

Javascript引用指针使用介绍

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

尝试完成以下完形填空:复制代码如下: /*创建一个head0在头,tail0 */function intlist (head0,tail0) {this。head=head0 | | 0this.tail=tail0 | | null}/*返回一个包含数组中所有数字的int list */int list . list=function(_ args){ var sentinel=new int list(),len=_ _ args.length,p=sentinelfor(var I=0;我透镜;I){ p . tail=new IntList(_ _ args[I]);p=p . tail;}返回sentinel.tail};/*返回对象的字符串表示形式*/int list . prototype . tostring=function(){ vartemp=' ';temp='[';对于(var L=这个;l!==nulll=l . tail){ temp=temp ' ' l . head;} temp=']';返回温度;};/* *返回一个IntList,包括IntList A和IntList B,*其中B的元素在A之后.您不能使用新关键字。*/function install (a,b) {/*完成函数*/}/* *返回一个新的长度为len的IntList,*以#start元素开始(其中#0是第一个元素),* l不能更改。*/function sublist (l,start,len) {/*完成函数*/}这是一个用Javascript编写的链表问题。因为链表有复杂的引用操作,所以可以用来考察对Javascript引用的理解。用简单的测试用例:复制代码如下: /*测试数据ate和子列表函数是否正确*/function test(){ var a=int list . list([4,6,7,3,8]),b=intlist.list ([3,2,5,9]);数据(甲,乙);if(a . tostring()==='[4 6 7 3 8 3 2 5 9]'){ alert(' dcatenate函数正确。);} else {alert('无效函数'。);} var L=IntList.list([3,4,5,2,6,8,1,9]),result=sublist(L,3,3);如果(结果。tostring ()===' [2 6 8]') {alert('子列表函数是正确的。);}else{ alert('sublist函数是正确的。);}} Javascript引用?实际上,当一个引用类型实例被赋予一个变量时,该变量存储该实例的引用:var temp=new Object();

这种表达方式非常适合它的名字和引用类型,它的例子当然是可以参考的。当这个变量被支付给另一个变量时,实际上只执行引用的复制操作:var temp2=temp

因此,虽然从定义上看:temp2=temp,但它们并没有直接的联系,比如修改了temp的引用:复制的代码如下: vartemp={ name 3360 ' temp ' };var temp2=temptemp={ name : ' not temp 2 ' };temp===temp2//false当然,如果我们只修改指针指向的实例本身,那么temp2仍然等于temp:复制代码如下: vartemp={ name 3360 ' temp ' };var temp2=temptemp.name='也是temp 2 ';temp===temp2//什么是trueintlist?我们来分析一下下面这张图:

创建两个空变量,所以右边图片中的l和q是空的。创建一个头部为3、尾部为空的新IntList,将L引用的值赋给Q,这样L和Q都指向这个新IntList。q指向一个新创建的IntList,它的头是42,尾是空的。把Q的指针指向l的尾部,这样两个intlists就嵌入了。可以看出,IntList是通过指针进行多重嵌套的数据结构,称为链表。1.创建两个空变量,所以右边图片中的l和q是空的。2.创建一个头部为3、尾部为空的新IntList,将L引用的值赋给Q,这样L和Q都指向这个新IntList。3.q指向一个新创建的IntList,它的头是42,尾是空的。把Q的指针指向l的尾部,这样就嵌入了两个IntList。可以看出,IntList是通过指针进行多重嵌套的数据结构,称为链表。在IntList合并中,我们只需要将一个的尾部指向另一个。这样就把两个IntList连接起来了:复制代码如下: /**返回一个IntList,包括IntList A和IntList B,*其中B的元素在A之后.您不能使用新关键字。*/函数数据(A,B){ var p;for(p=A;p!=nullp=p . tail){ if(p . tail===null){ p . tail=B;打破;}}返回A} IntList截取由于标题要求原IntList不能更改,我们只能从原IntList中取出数据,重新构造一个新的数据。复制的代码如下: /**返回一个新的IntList,其长度为len,*以#start元素开始(其中#0为第一个元素),* l不可更改。*/函数子列表(L,start,len){ var K,P,J;var i=0,end=start len对于(P=L;i=结束;P=P.tail,i ){如果(I开始){继续;} else if(I===start){ K=new int list(p . head);j=K;} else if(I start I end){ j . tail=new int list(p . head);j=j . tail;} else if(I=end){ break;} }返回K;}问题1。传递参数时函数是如何传递的?比如下面代码的引用过程是怎样的?复制的代码如下: varobj={ name : ' any ' };函数getName(_ obj){ return _ _ obj . name;} var name=getName(obj);

版权声明:Javascript引用指针使用介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。