发表于: 2016-09-10 17:22:59
0 1760
今天完成的事情:
了解了下面向对象与继承
明天计划的事情:
task6
遇到的问题:
无
收获:
粗略总结了波面向对象与继承分享一波->
面向对象与继承
JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。
JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。

红色箭头是原型链。注意,Student.prototype指向的对象就是xiaoming、xiaohong的原型对象,这个原型对象自己还有个属性constructor,指向Student函数本身。
另外,函数Student恰好有个属性prototype指向xiaoming、xiaohong的原型对象,但是xiaoming、xiaohong这些对象可没有prototype这个属性,不过可以用__proto__这个非标准用法来查看。
构造函数:
原型前添加new,构造函数与普通函数的区别是原型以大写开通。
通过编写一个createStudent(),在内部封装所有的new操作
createStudent()函数有几个巨大的优点:一是不需要new来调用,二是参数非常灵活,可以不传,也可以传。
JavaScript中的apply()方法和call()方法使用介绍:
1、每个函数都包含两个非继承而来的方法:apply()和call()。
2、他们的用途相同,都是在特定的作用域中调用函数。
3、接收参数方面不同,apply()接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。
call()方法第一个参数与apply()方法相同,但传递给函数的参数必须列举出来。
JavaScript的原型继承实现方式就是:
- 定义新的构造函数,并在内部用call()调用希望“继承”的构造函数,并绑定this;
- 借助中间函数F实现原型链继承,最好通过封装的inherits函数完成;
- 继续在新的构造函数的原型上定义新方法。
评论