对象中的静态成员和实例成员:
·使用构造函数方法创建对象时,可以给构造函数和创建的实例对象添加属性和方法,这些属性和方法都叫做成员。
·实例成员:在构造函数内部添加给this 的成员,属于实例对象的成员,在创建实例对象后必须由对象调用。
·静态成员:添加给构造函数自身的成员,只能使用构造函数调用,不能使用生成的实例对象调用。
![](https://img-blog.csdnimg.cn/91d90d8086c8460cb62705b81b72c316.png)
若想两者都可以调用则使用:实例成员的方法将属性或方法添加到函数当中
![](https://img-blog.csdnimg.cn/337d799a6634422392bb7e53a4aba110.png)
构造函数浪费空间
构造函数直接定义方法会导致内存浪费的问题,那么我们选择使用在构造函数外重新定义一个公共对象用来封装这些公共的方法,然后在调用时直接使用,尽可能避免内存的浪费........
![](https://img-blog.csdnimg.cn/808ada769fd1412c82e0c9f7a3ee9bca.png)
构造函数、原型对象、实例三者间的关系
构造函数具有一个属性能指向原型对象,三者互换得出构造函数的内容
![](https://img-blog.csdnimg.cn/7e67401e85c84711b838d5596b45e5e4.png)
![](https://img-blog.csdnimg.cn/578aeb64dd1b43c5a656ba55475acb91.png)
通过构造函数实例化一个对象利用对象的__proto__属性也能找到原型对象
![](https://img-blog.csdnimg.cn/9322885f42db4896af46c79de3433895.png)
总结利用原型对象设置方法可以避免内存的浪费,且保证对象的方法不重复
原型链思路总结,就是当我们向上找方法如果找不到就返回未定义,若找到就返回最近一级的方法
![](https://img-blog.csdnimg.cn/25eeedf83fdc4d0da6e1ab662640c55d.png)
![](https://img-blog.csdnimg.cn/d5d93c49222c40ad872250f99b109ddb.png)
原型链获取方法的方法就是根据最近一级的方法是谁就获取哪一谁,如下注释掉函数中的方法就返回原型对象中的方法
![](https://img-blog.csdnimg.cn/ad7e85dae5bc40319d64166270f4afc3.png)
原型链查找机制
每当代码读取某个对象的某个属性时,都会执行一次搜索目标是具有给定名字的属性:
1.搜索首先从对象实例本身开始
2.如果在实例中找到了具有给定名字的展性,则返回该属性的值
3.如果没有找到,则继续沿原型链上寻的原型对象,在原型对象中查找具有给定名字的属性
4.如果在原型对象中找到了这个属性,则返回该属性的值,没有找到继续上寻到object对象,找到返回没找到就报错
值类型写入(实例对象.值类型成员= xx):
当实例期望重写原型对象中的某个普通数据成员时实际上会把该成员添加到自己身上-也就是说该行为实际上会屏蔽掉对原型对象成员的访问
就类似利用dom方法去修改一个属性值时,其实并未修改任何值,只是把修改的数据放入行内式中提高样式优先级
内置函数的原型对象不允许更改,只能对原型新增一个原型对象方法
![](https://img-blog.csdnimg.cn/75677c7e3a424730a6c89508bef7e9d5.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)