对JavaScript的对象模型的思考
来源:互联网 发布:大河剧 知乎 编辑:程序博客网 时间:2024/05/16 15:15
首先我不知道JavaScript到底是怎么实现的,我只是建立一个模型能够跟实际的情况不矛盾.之前我深入研究了JavaScript高级程序设计
1. 建立Object对象的时候该对象的prototype属性和constructor属性都是undefined,但当调用这两个属性就建立新的Object对象和Object函数对象并引用.否则就没完没了了.
2. 当建立
function XX(){
...
}
就建立XX函数对象,以这种方式建立的函数对象的constructor属性是undefined.prototype属性引用另一个Object对象.
3. 当var x = new XX()的时候,JavaScript先建立2个Object对象(o1和o2),x引用o1,o1的prototype引用o2,o1的constructor引用XX对象,并在o1中建立一些变量引用XX对象的prototype中的所有引用类型变量,建立一些变量复制XX对象的prototype中的所有基本类型变量.最后执行XX()函数,若函数中有this关键字时,将this替换成x.
4. 在调用x的属性时,若x中没有该属性的时候,就去x.contructor.prototype中查找该属性.若没有则到x.contructor.prototype.contructor.prototype中找,以此类推.
5. 使用x instanceof XX时,将通过查看x.constructor属性的对象是否为XX,若是就返回true,若不是则找x.constructor.prototype.constructor是否是XX,以此类推最后当constructor是undefined时,也就是到了Object对象了都不符合就返回false.
这种模型可以很好的解释原形链的继承方式,极晚绑定,function方式定义函数的高效性,instanceof的执行等等.
- 对JavaScript的对象模型的思考
- 对C++中含有虚基类对象模型的思考
- 对javascript的一些思考
- 对敏捷模型的感触和思考
- UE4对模型制作镜子的思考
- 关于C++对象模型的思考
- 对思考的思考
- 对JavaScript开发中困扰的思考
- 对JavaScript开发中困扰的思考
- 对临时对象的一点思考
- JavaScript 通过function创建对象的思考
- JavaScript对象的键值对
- 4、数据分析师对AARRR模型的应用思考
- 对IOCP模型中获取客户端状态的思考
- javascript对文档对象模型DOM的基本操作学习笔记
- 对无效思考的思考
- Ruby和JavaScript对象模型的比较
- JavaScript面向对象-原型的内存模型
- 对天乙社区bbscs8实现的详细分析四
- 微软.NET Framework的开源之路
- 白色的风信子——刘继荣
- 封装好的DLL远程注入函数
- 在ASP.NET中实现POST发送数据http://dotnet.aspx.cc/article/atv1glxt-65ff-4m82-ct5u-b1j65d3zn2ok/read.aspx
- 对JavaScript的对象模型的思考
- datagrid连接数据库并显示及更新
- 发现一个不错的下载站
- 韩乔生最牛的一次解说 (超级搞笑)
- 大德之旅——朱鸿
- 移除dll并保持正常运行
- ASP.net中Datagrid的应用
- 当一条小鱼又何妨
- 最长递增子序列问题的求解