javascript中Function和Object之间的关系
<p><span style="font-size: 16px; font-family: 幼圆">js中的类继承模式类似 c++中的 基类和派生类的关系。这里我们尝试通过这样的一种方式来解释js中的基于原型链的继承机制。</span></p><p><span style="font-size: 16px; font-family: 幼圆">派生类对象存储了基类的数据成员</span></p>
<p><span style="font-size: 16px; font-family: 幼圆">派生类的实例对象可以 访问基类的属性,方法</span></p>
<p><span style="font-size: 16px; font-family: 幼圆">js中的内置对象Date、RegExp、Number、Function... 可以看做派生类、Object可以被看做 基类。</span></p>
<p><span style="font-size: 16px; font-family: 幼圆">而特殊的是,<span style="color: rgba(255, 102, 0, 1)">javascript中Object这个基类,同时又是 Function这个派生类的 实例对象。</span></span></p>
<p><span style="font-size: 16px; font-family: 幼圆">----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p>
<p><span style="font-size: 16px; font-family: 幼圆">javascript中使用function关键词创建一个类,例如:function obj(){} </span></p>
<p><span style="font-size: 16px; font-family: 幼圆">但是,对于obj这个类(或方法),它会同时有__proto__和prototype属性。__proto__属性决定它是Function类的一个实例,你就可以视它为一个普通的方法或者属性,能够使用apply、call..或者obj() 来调用它。;而prototype属性决定它是一个构造函数(派生类)。而由于javascript中的任何构造函数都将会是Object的派生类,所以你可以使用toString。。等方法。</span></p>
<p><span style="font-size: 16px; font-family: 幼圆">所以可以得到,如果我们将Object视作一个function Object(){} 构造函数,在其原型上扩展属性a=1 Object.prototype.a = 1 </span></p>
<p><span style="font-size: 16px; font-family: 幼圆">那么,Object.a===1 是成立的,因为Object同时也是Function的实例对象</span></p>
<p><span style="font-size: 16px; font-family: 幼圆"><img style="display: block; margin-left: auto; margin-right: auto" src="https://img2018.cnblogs.com/blog/1509908/201906/1509908-20190607220720975-2031224501.png" alt=""></span></p>
<p><span style="font-size: 16px; font-family: 幼圆"> </span></p><br><br>
来源:https://www.cnblogs.com/yf2196717/p/10989466.html
頁:
[1]