JavaScript继承(一)——原型链
某厂面试归来,发现自己落伍了!>>> 继承是面向对象语言中一个最为人津津乐道的概念。许多面向对象语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。在ECMAScript中,函数没有签名,无法实现接口继承,只支持实现继承,继承主要依靠的是原型链。 先来看一个简单的原型链继承示例,如下图: 首先声明一个 Human 函数,给它的原型添加一个 getHumanSex 方法。然后声明一个 Person 函数,要让 Person 继承 Human ,能使用 Human 的属性和方法,只要把 Person 的原型重新赋值为 Human 的一个实例就好了。最后给 Person 的原型(也就是 Human 的这个实例)添加一个 getPersonSex 方法。现在创建 Person 的一个实例 personObj , name = '张三',age = 12 。如果访问 personObj.name ,那么就可以直接访问到是 张三 了。假如现在要访问 humanSex ,因为 personOb j中没有,所以会顺着 __proto__ 属性到 Person 的原型中去找,而 Person 的原型就是 Human 的一个实例,它的 humanSex 属性就是 '男/女' ,所以 personObj.humanSex 的值就是 '男/女'