【JavaScript】JavaScript的Function与Object浅析
前言:
JavaScript的面向对象是基于原形的,所有对象都有一条属于自己的原型链。Object与Function可能很多看Object instanceof Function , Function instanceof Object都为true而迷惑,所以首先看下对象的实例。
一、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的原型链中。
3. instanceof为js中判断实例的方法,判断的根据就是(例 a instanceof A) 判断a的原型链中是否含有A.prototype。
4. 综上包括常规认识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
相关文章
- Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class
- What is the most efficient way to deep clone an object in JavaScript?
- [ Javascript ] JavaScript中的定时器(Timer) 是怎样工作的!
- 【学习笔记59】JavaScript原型的理解
- JavaScript的OOP编程2
- JavaScript - 获取 Object 对象长度
- JavaScript - 实现向 formData 对象中追加数组或对象,使用 append() 插入数组、对象等复杂数据类型(vue / uniapp / react 项目通用解决方案)
- JavaScript - 对象(Object)
- 【JavaScript】Registering JavaScript object methods as callbacks
- 【JavaScript】理解与使用Javascript中的回调函数
- 【JavaScript】Object.observe()带来的数据绑定变革
- Javascript 笔记与总结(2-11)暴力操作节点
- 《深入理解JavaScript》——1.13 变量作用域和闭包
- 《JavaScript开发框架权威指南》——1.4 查找、添加和删除Bower包
- 《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——第1章 变小的巨大影响1.1 移动魔力和掌上电脑
- JavaScript深入理解闭包及应用
- 微信小程序开发规范文档-JavaScript注释规范
- Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
- Vue 警告: Failed setting prop “prefix“ on <input>: value [object Object] is invalid..........
- JavaScript中对象(Object)的方法
- 25个JavaScript数组方法代码示例
- 华为OD机试 - 网上商城优惠活动(一)(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 【web前端(四十三)】javascript基础
- JavaScript获取select下拉框中的第一个值
- 【javascript】Javascript中"||"的妙用
- javaScript遍历对象、数组总结(转载)
- javascript的创建对象object.create()和属性检测hasOwnPrototype()和propertyIsEnumerable()
- javascript的propertyIsEnumerable()方法
- JavaScript(3)——Object-Oriented Design