Javascript面向对象编程(一)

时间:2023-03-09 21:18:45
Javascript面向对象编程(一)

什么是面向对象?

它是一种新的编程模式。以往的面向过程是将功能都写在一起,逐行实现。面向对象与其不同,它只关心对象提供的功能,而不在乎细节。

面向对象的特点?

抽象:抓住问题的核心,贯穿始终;

封装:不考虑内部实现,只考虑功能;

继承:从已经有的对象上,继承出新的对象。

原始的生成实例对象?

Javascript面向对象编程(一)

从这个实例中可以看出两点问题:一是如果多生成几个实例的话,就会写的特别麻烦造成了代码的冗余;二是两个实例之间并没有产生一些联系。

通过构造函数改造下?

Javascript面向对象编程(一)

经过改造是否发现无论需要多少实例只要new一下就可以,比改进之前真的方便很多。

构造函数和对象之间的关系?

面向对象------------------------对一个对象进行编程

构造函数------------------------提供一个对象让你编程

通过构造函数实现面向对象编程

如果在构造函数内部添加方法呢?

Javascript面向对象编程(一)

我们可以发现在构造函数内部添加一个show方法后,输出的都是统一格式。如果people1并不想有show方法怎么办?如果people1不想跟people2输出的格式一样又怎么办呢?这个时候构造函数的prototype属性就发挥作用了。它可以使方法在内存中只生成一次,使所有实例都指向那个内存地址。这样既环保也提高了效率。

原型的概念是什么?

首先声明两点:其一,在函数中两个新建的函数是不相等的。

Javascript面向对象编程(一)

其二,在构造函数中,两个新的函数也是不相等的。

Javascript面向对象编程(一)

此时可以看出构造函数的多次创建会产生多个同名函数,造成冗余太多。

让我们用原型来解决一吧!

Javascript面向对象编程(一)

此时,任何一个对象的原型上都有了show方法,由此得出,Object.prototype身上的添加的方法,相当于添加到了所有的Object身上。
 补充一点:
Javascript面向对象编程(一)

输出结果:

//constructor表示当前的函数属于谁
//__proto__ == [[prototype]],书面用语,表示原型指针
以上就是面向对象编程的第一部分。第二部分再继续写面向对象的继承。