javascript基于原型的继承机制

</pre>请区分两个对象:function对象及原型对象;以Object为例<p></p><p><img src="https://img-blog.csdn.net/20141009162511593?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXphcmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />左侧是Object函数对象,右侧是原型对象,</p><p><strong>每个函数本身就是一个构造函数 每个函数又对应一个原型对象</strong></p><p><strong><span style="font-size:24px;">1 当建立一个变量时</span></strong></p><p><pre code_snippet_id="481244" snippet_file_name="blog_20141009_2_9708504" name="code" class="javascript">var aa = new Object();  //等价于var aa={}
aa.name = 'fjs'; 
console.log(aa.__proto__ === Object.prototype);
现在内存中开辟一个空间,再将该变量的_proty_属性指向构造函数(Object函数对象)的原型object


2 当定义一个函数时,

在内存中既开辟函数对象的空间,又开辟函数原型对象的空间

function Fjs() {  
    this.name = "fjs";  
}  
  
console.log(Fjs.prototype.constructor === Fjs);  
console.log(Fjs.prototype.__proto__ === Object.prototype);<strong>  </strong>



原型对象的_proto_默认指向Object的原型对象,因为所有对象都继承Object对象

3验证上面两个结论

<span style="font-size:12px;">function Fjs() {  
    this.name = "fjs";  
}  
  
  
var fjs = new Fjs();  
console.log(fjs.__proto__ == Fjs.prototype); </span><span style="font-size:24px;font-weight: bold;"> </span>

FJS对象是继承Object对象
fjs变量的的建造过程:

(1)内存开辟创建一个新的对象fjs(空的)

(2)将当前构造函数(FJS为构造函数对象)的作用域(scope?)指向刚刚创建的新对象(fjs),也就是将构造函数(FJS)的this指向刚刚创建的对象(fjs),而且要为这个对象的内部__proto__属性赋值,用它指向当前构造函数的prototype属性的值(也就是FJS的原型对象)

(3)执行构造函数中的代码,也就是调用this(this.name=fjs赋值过程),为刚刚创建的对象赋值

(4)返回该对象(var fjs= new FJS())














 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值