js之所以难是因为2个原因:
1、它是多范型的编程语言,其语法特性涉及强类型语言的基本语法和函数式编程语言的函数用法,这一点倒问题不大,只要理解2种编程范型问题就自然解决了。
2、基于原型的继承特性和对象的易变性,这导致继承系统存在着原形链和继承链的概念,因而使得其对象继承系统看起来常常不那么可靠,对那些以C++、java 开始入门面向对象编程的人来说尤其如此。
js的这种现象,对喜欢它的人来说,是灵活,对不喜欢它的人来说,是混乱。
也正因为这种灵活或者说混乱,js 的编码风格非常多变,无论是基于原形链还是基于继承链,还是2者兼顾,js都能搭建起面向对象的大型系统,但是要求编码人员必须遵循一定的编码规范,这在C++和java项目中看来,是不安全的,这正是对象易变性带来的缺点。
无论是借鉴他人还是自己总结,如果一个js程序员在js开发中没有自己的编码习惯,就可以说他根本还不能称之为js程序员,在DIV里面写个onclick="xxx",调用个函数,谁不会,自认为会js编程的,有几个能理解原型继承,自认为理解原型继承的,又有几个能把它讲清楚?
所以,js是很可爱的编程语言,他让**的人在无知中**,让牛逼的人在糊涂中牛逼。
1、它是多范型的编程语言,其语法特性涉及强类型语言的基本语法和函数式编程语言的函数用法,这一点倒问题不大,只要理解2种编程范型问题就自然解决了。
2、基于原型的继承特性和对象的易变性,这导致继承系统存在着原形链和继承链的概念,因而使得其对象继承系统看起来常常不那么可靠,对那些以C++、java 开始入门面向对象编程的人来说尤其如此。
js的这种现象,对喜欢它的人来说,是灵活,对不喜欢它的人来说,是混乱。
也正因为这种灵活或者说混乱,js 的编码风格非常多变,无论是基于原形链还是基于继承链,还是2者兼顾,js都能搭建起面向对象的大型系统,但是要求编码人员必须遵循一定的编码规范,这在C++和java项目中看来,是不安全的,这正是对象易变性带来的缺点。
无论是借鉴他人还是自己总结,如果一个js程序员在js开发中没有自己的编码习惯,就可以说他根本还不能称之为js程序员,在DIV里面写个onclick="xxx",调用个函数,谁不会,自认为会js编程的,有几个能理解原型继承,自认为理解原型继承的,又有几个能把它讲清楚?
所以,js是很可爱的编程语言,他让**的人在无知中**,让牛逼的人在糊涂中牛逼。