首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • Array.prototype.slice.call开个贴子!看看这玩意是什么东西!网上看到的不太明白。 [已结帖,结帖人:fuda_1985]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuda_1985
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-07-25 09:31:51 楼主
    等着以后自己挖自己坟找资料!~
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xyq1986
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-25 10:13:551楼 得分:2
    调用slice方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • BlueDestiny
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-25 10:53:492楼 得分:6
    你明白了call和apply就自然明白了这一句:Array.prototype.slice.call

    这句用在arguments上比较常见
    HTML code
    <script type="text/javascript">//<![CDATA[ void function fn() { a = Array.prototype.slice.call(arguments,0); alert(a); }(1,2,3,4,5,6,7,'never-online.net/blog') //]]></script>

    因为arguments不是数组,所以不能直接调用slice方法。用call和apply也就是要“打破”这种情况。
    call/apply都可以改变scope。看一个例子就行了。
    HTML code
    <script type="text/javascript">//<![CDATA[ function classA() { this.name='bluedestiny'; this.show = function () { alert(this.name); } } function classB() { this.name = 'never-online'; } var objA = new classA(); var objB = new classB(); objA.show.call(objB); //]]></script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-25 11:00:503楼 得分:2
    BL经典
    修改 删除 举报 引用 回复