为何不在传参列表里显式表示参数? 赶脚用个arguments,容易出错:(
6 回复
个人感觉这是个很灵活的语法, 在常规用法中,完全可以无视arguments对象,通过传递参数即可完成大多数的操作。感觉这里完全可以和其他语言一样的用法
function Person(name, age, gender) {
// .. do something
// 感觉这里和其他语言不同的地方就是没办法检查参数的合法性
}
如果有特殊的需求,那么感觉arguments是非常灵活的,比如javascript没有方法重载的语法,那么就可以通过arguments对象来灵活的实现类似重载的方法。
function Person() {
switch(arguments.length) {
// case ... 虽然这个实例没有多大的意义 -.-
}
}
另外还有好多时候我们可以通过arguments对象来判断传参数中是否有某个类型的参数,然后进行对应的操作。等等。 所以感觉arguments是个很灵活的东西, 正所谓奇葩的语法能解决更奇葩的需求 ~ 呵呵 ~ 纯属个人看法 ~
@kingapple 个人感觉每个语言都有自己不同的设计哲学,况且就针对OOP来说,从目前的情况来看支持和反对的人也不在少数,从我的角度来看,Java这种纯面向对象的语言用着也不是很舒服的,记得以前看过一篇挺有意思的文章Execution in the Kingdom of Nouns。所以现在有好多语言在面向对象上都不是那么严格,而且如果js真的有需要的话,也可以通过比如函数、原型链等来实现类似于面向对象。