什么是面向对象?
它是一种新的编程模式。以往的面向过程是将功能都写在一起,逐行实现。面向对象与其不同,它只关心对象提供的功能,而不在乎细节。
面向对象的特点?
抽象:抓住问题的核心,贯穿始终;
封装:不考虑内部实现,只考虑功能;
继承:从已经有的对象上,继承出新的对象。
原始的生成实例对象?
从这个实例中可以看出两点问题:一是如果多生成几个实例的话,就会写的特别麻烦造成了代码的冗余;二是两个实例之间并没有产生一些联系。
通过构造函数改造下?
经过改造是否发现无论需要多少实例只要new一下就可以,比改进之前真的方便很多。
构造函数和对象之间的关系?
面向对象------------------------对一个对象进行编程
构造函数------------------------提供一个对象让你编程
通过构造函数实现面向对象编程
如果在构造函数内部添加方法呢?
我们可以发现在构造函数内部添加一个show方法后,输出的都是统一格式。如果people1并不想有show方法怎么办?如果people1不想跟people2输出的格式一样又怎么办呢?这个时候构造函数的prototype属性就发挥作用了。它可以使方法在内存中只生成一次,使所有实例都指向那个内存地址。这样既环保也提高了效率。
原型的概念是什么?
首先声明两点:其一,在函数中两个新建的函数是不相等的。
其二,在构造函数中,两个新的函数也是不相等的。
此时可以看出构造函数的多次创建会产生多个同名函数,造成冗余太多。
让我们用原型来解决一吧!
此时,任何一个对象的原型上都有了show方法,由此得出,Object.prototype身上的添加的方法,相当于添加到了所有的Object身上。
补充一点:
输出结果:
//constructor表示当前的函数属于谁
//__proto__ == [[prototype]],书面用语,表示原型指针
以上就是面向对象编程的第一部分。第二部分再继续写面向对象的继承。