JS之面向对象2
今天学习了JS面向对象的一个特性–继承。JS是一门基于面向对象的语言,也就是说,JS并非真正的面向对象,相对的,Java,PHP5以上等的编程语言则是真正面向对象的、真正意义上的面向对象语言。所以这里通过对PHP语言的继承的学习来延伸到对JS继承的学习。
PHP是一门常用的后端开发语言,因为学习JS的继承,让我有机会第一次接触到这门语言。PHP的工作过程就是服务器先读取PHP文件,把服务器端的标记(如)里面的内容选出来运行,再把结果返回来给客户端,所以客户端看不到服务端程序的源码,这就是PHP保密性好的原因。出于只是为了帮助对JS继承的学习的出发点,所以只对PHP一些简单语法进行学习与了解。PHP中用echo来进行输出,跟JS中的alert作用是一样的;PHP定义变量一定要用美元符号,如定义值为12 的变量a,则写作“$a=12”。PHP有两个比较特别的地方,其一,在PHP中,字符串两边可以不加引号,如“echo abc”;其二,JS中要连接两个字符串可以使用加号,但是PHP中加号只能是数字相加,所以要做字符串连接要用点,如“$a.$b”。那么又有新的疑问出现了,PHP中用点来连接两个字符串,点在JS中常用来访问对象的属性,那么PHP中用什么符号访问对象的属性呢?答案是->,如“$this->name”。PHP学起来还是蛮有意思的。
接下来就是学习PHP的继承。所谓继承,就是从已有的类去派生出新的类,说白点就是把其他类的内容copy过来,再加上自己的东西,由此产生属于自己的类。对象由属性和方法组成,所以要继承一个对象,需要继承那个对象的属性和方法。PHP的继承是先创建一个父类,里面添加好属性和方法,然后用extends关键字让子类去继承父类的属性和方法,再添加子类自己独有的属性和方法,最终形成独有的子类。过程其实并不难。
最后由PHP的继承类比到JS的继承,同样的先创建一个父类,利用构造函数添加其属性,利用原型添加其方法。接着也是利用extends关键字让子类去继承父类,通过调用父类的构造函数来继承父类的属性,这里采用call方法,如“Person.call(this,name,sex);”;通过原型来继承父类的方法,如“Worker.prototype=Person.prototype;”。然后添加子类自己的属性和方法,一个完整的子类就创建好了。JS的继承里面涉及到两个重要的知识点,call()方法和原型链,这将通过后续的学习再进一步掌握。