yanhaijing / zepto.fullpage

Focusing on the fullPage.js for mobile terminals.
MIT License
2.1k stars 510 forks source link

有关zepto.fullpage.js文件暴露方法的一个问题 #81

Closed linzb93 closed 7 years ago

linzb93 commented 7 years ago

就是这句:return fullpage[val].apply(fullpage, [].slice.call(arguments, 0)); 我把它改成了return fullpage[val].apply(fullpage, arguments);试了几个结果是一样的,就算被调用的方法也有用到arguments这个关键字。我想问下有没有特殊情况是我没有考虑到的?

linzb93 commented 7 years ago

在《Javascript高级程序设计(第三版)》讲解apply方法时,用的也是arguments而不是转换后的arguments

yanhaijing commented 7 years ago

也行,一样的,我有点画蛇添足了,求提个pr

linzb93 commented 7 years ago

还有2个问题。 1.为什么不把init()函数的代码写进Fullpage()函数里面,而要用call函数? 2.在init函数里面有看到var that = this; 既然this指代的对象在这个函数里面没有变化,为什么还要用 that = this?

yanhaijing commented 7 years ago

关于问题的解答: 问题1: 这个我开始打算把Fullpage暴露出去,想着这样写init就是私有方法,不会对外暴漏了,后来其实fullpage也没暴露出去,所以写在哪里其实没区别

问题2: 我理解的这样写that能够被压缩工具压缩,但是this不会,不过这种行为并不好,压缩工具应该能够压缩this,而不是依赖写代码的行为,而且开启了gzip,this自然会被压缩掉,所以这个也属于一个习惯问题,完全可以不用这么写

要不要提个pr优化下,但是init那个就不用优化了,我后续可能还有别的想法

linzb93 commented 7 years ago

问题1没明白,如果把Fullpage暴露出去的话,init函数里面的this.xx也会暴露的吧?

yanhaijing commented 7 years ago

但是init方法没暴露出去

linzb93 commented 7 years ago

我的意思是init函数里面的代码搬回Fullpage里面,删除init函数。因为其他地方没有再用到init函数了。跟有没有暴露没关系吧?

yanhaijing commented 7 years ago

嗯,看了下可以的,已经忘记当初为何这样写了,可以发个pr