JavaScript的Function与Object浅析

一、JS中所谓的实例

  1. 如var a = new A();这样子通常的认为 “a为A函数的实例对象”。

  2. new操作的过程是什么?

      1.new创建一个空对象{}称为小C
      2.然后将A.prototype放置到小C的原型链顶端。即小C.__proto__指向 A.prototype
      3.执行A函数,将A中this指向小C,执行结束,如果没有return那么默认返回this引用。
    

那么new的其中一个的作用便是把A.prototype添加到了a的原型链中。

  1. instanceof为js中判断实例的方法,判断的根据就是(例 a instanceof A) 判断a的原型链中是否含有A.prototype。

  2. 综上包括常规认识new出来的实例。 所谓o 为fn的实例对象,实际就是指o原型链中含有fn.prototype。

二、Object与Function的模糊图解
这里写图片描述

解释: 所有函数的prototype属性均有constructor指向该函数。
所有对象均有原型链(Object.prototype的原型链为null)。
_proto_(chrome, ff中)代表[[proto]]内置属性。
看过这个图之后应该就明白为什么instanceof是那个的结果了。

三、对象与Object的关系,原型链终结于Object.prototype

Object.prototype的原型链为空(即没有一个原型对象)。因此Object.prototype instanceof Object 为false。
判断类型用typeof , typeof(Object.prototype) === ‘object’.所以不是所有的对象均为Object对象实例。应该是除了Object.prototype除外的所有对象均为Object对象的实例。

本人是初学者 欢迎提看的人各种建议,说不对的地方更是感谢…

转载请注明出处:http://blog.csdn.net/SyKent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值