来千锋青岛web前端培训已经是第三个月了,时间过得很快,每一天都是在繁重的学习之中度过的,很庆幸自己还是坚持过来了。学习JS相比一阶段的话在代码上、逻辑思维上都是有很大的转变。JS中很多地方需要我们注意,它与Java和C++很不一样。
1. JS中没有类继承关键字,和Java与C++不一样。JS的类继承需要自己动手实现,这也衍生出了多种类继承的编写范式。
2. 同时JS中没有函数重载特性,这个需要特别注意。因为在JS中函数只是普通对象,没有函数签名(函数名+参数)。而在Java和C++中,用函数签名唯一标示一个函数。不过在JS中我们也可以有多种方式模拟出函数重载的效果。
3. JS中的作用域与Java也不一样,JS中有作用域链,在函数执行中,解释器会根据执行函数的作用域链一层层的往上寻找变量,一直找到位于末端的window作用域中。
4. JS中没有块级作用域。在Java等语言中,因为有块级作用域,所以i变量会在for循环执行完后消失。但是在JS中,i变量会保持在执行环境中,因为没有块级作用域。所以alert出的结果是10。
5. JS中有原型的概念,每个类都有对于的原型,包括函数等。类对象中有引用指向原型对象,所以同一类的原型对象被所有类对象共享。由此衍生出很多有意思的特性。
6. JS中有闭包,这个闭包特性是由作用域链的设计衍生出来的,特别值得注意。根据闭包特性,结合匿名函数,我们可以模拟块级作用域效果,甚至可以模拟出单例模式以及私有变量等。
7. JS中的继承与多态,需要程序员自己实现,与Java和C++不一样。利用JS的原型链,可以写出很多不同的继承效果,各有特点。写JS中的继承远比Java中有技术含量。
8. JS有垃圾回收机制,但是比较简单,没有jvm中的有意思。
虽然二阶段已经结束,但是对JS的学习还没有结束,我还需要花时间对这些知识进行消化。
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱