JS面向对象之原型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_36091081/article/details/80866336
JS面向对象之原型
一、从对象引用的问题说起
    
如上code中,创建了p1、p2对象,比较p1中的showName函数和p2中的showName函数,结果为false;
虽然两个对象中的函数的形式、实现的功能都是一样的,但由于p1、p2是对象的引用,分别指向的是不同的两块内存区域,所以比较的结果为false;
假设有1000个对象,就要在内存中开辟1000个内存区域,并且每个对象中都有showName函数,这就极大的浪费了内存空间,怎么办呢?我们想最好把这个showName函数给提出去,作为一个公共函数,这时原型就横空出世了,就是为了解决上述问题。
原型用来提取对象下面公用的方法或者属性,让公用的方法、属性在内存中只存在一份,以提高性能。

二、原型中的函数和普通函数有何区别?
    可将原型的概念和css中的class的概念对照起来理解:
原型中的函数 -- css中的class,可复用,优先级低
普通函数 -- css中的style,不可复用,优先级高
    结合下面代码方便理解:


三、通过原型改成工厂方式:
    
此时再比较两个对象的showName函数,结果为true,说明该公共函数在内存中只占一份。

四、原型的书写原则
公共的属性和方法写在原型中;对象自己的属性和方法,写在构造函数中
一般是构造函数加属性、原型加方法。

总结:
原型就是公共属性和方法的容器,作用就是减少内存的浪费,提高性能。

猜你喜欢

转载自blog.csdn.net/github_36091081/article/details/80866336