文章博客

技术团队文档示例


原型

<h3>原型的定义</h3> <p>1.所有的函数都天生自带一个属性:</p> <ul> <li>prototype(原型),它是一个对象数据类型的 值,在当前prototype对象中,储存了类需要 给其实例使用的公有的属性和方法。</li> </ul> <p>2.prototype这个对象,浏览器会默认为其开 一个堆内存,在这个堆内存当中天生自带一个 属性:constructor(构造函数),这个是属性 储存的值就是当前函数本身</p> <p>3.每一个类的实例(每一个对象)都天生自带 一个属性:<em>proto</em>,属性值是当前对象所属类 的原型(prototype)</p> <pre><code class="language-javascript">function Fn(name,age){ this.name = name this.age = age; this.say = function(){ console.log('my name is'+this.name+'iam+'this.age'+) } } Fn.prototype.say = function(){ console.log('Hello Word') } Fn.prototype.eat = function(){ console.log('I love food') } var f1 = new Fn('judy',19); var f2 = new Fn('Wayne',88);</code></pre> <h3>原型继承</h3> <blockquote> <p>定义:让子类的原型指向父类的实例 children.prototype = new Parent(); [细节]</p> <ol> <li>我们首先让子类的原型指向feii的实例,然后在向子类原型扩展方法,防止提前增加方法,等原型重新指向后,之前在子类原型上扩展的方法都没有了(子类原型已指向新的空间地址了) 2.让子类原型重新指向匪类原型实例,子类原型上原有的constructor就没有了,为了保证构造函数的完整性,我们最好给子类原型重新手动设置constructor属性的值:Children.prototype.constructor = Children;</li> </ol> <p>[原理] 原型继承,并不是把父类的属性和方法copy一份给子类,而是让子类的原型和父类原型之间搭建一座桥梁,以后子类(或者子类的实例可以通过原型链的查找机制,找到弗雷原型上的方法,从而调取这些方法使用即可)</p> <p>[特征] 子类不仅可以继承父类原型上的公有属性和方法,而且<strong>父类提供对给实例的那些私有的属性方法</strong>,也被子类继承了(存放在子类原型上,作为子类公有的属性和方法)</p> </blockquote> <pre><code>function Parent() { this.x = 100; } Parent.prototype.getX = function () { console.log(this.x); }; function Children() { this.y = 200; } Children.prototype = new Parent();//=&gt;最好在扩展子类原型方法之前完成 Children.prototype.constructor = Children; Children.prototype.getY = function () { console.log(this.y); }; var child = new Children();</code></pre> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/e7a71e0cf0654f2034d57f7c3252e408?showdoc=.jpg" alt="" /></p>

页面列表

ITEM_HTML