为了账号安全,请及时绑定邮箱和手机立即绑定

关于Array.prototype.slice.call()的问题

关于Array.prototype.slice.call()的问题

莫回无 2019-02-11 16:16:04
HTML代码:<ol id="test-list">    <li class="lang">Scheme</li>    <li class="lang">JavaScript</li>    <li class="lang">Python</li>    <li class="lang">Ruby</li>    <li class="lang">Haskell</li></ol>控制台:var list = document.getElementById('test-list')var slist = list.children;slist.sort(function(a, b){   return a.innerHTML > b.innerHTML ? 1 : -1 ;});这里报错:Uncaught TypeError: slist.sort is not a function at <anonymous>:1:7 用typeof slist测试返回是"objiect"然后控制台输入:slist=Array.prototype.slice.call(slist);typeof slist;还是返回"objiect",但是这时控制台输入:slist.sort(function(a, b){   return a.innerHTML > b.innerHTML ? 1 : -1 ;});运行正常,没有报错.排序结果也是对的,slist.forEach(function(el){ list.appendChild(el);})运行后<ol id="test-list"><li class="lang">Scheme</li><li class="lang">JavaScript</li><li class="lang">Python</li><li class="lang">Ruby</li><li class="lang">Haskell</li></ol>我想问一下slist=Array.prototype.slice.call(slist);这一步起到了什么作用,为什么不能直接调用sort();;进行排序?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 412 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信