您现在的位置:首页 --> JavaScript --> Javascript原型链和原型的一个误区
Javascript原型链和原型的一个误区
浏览:2173次 出处信息
之前我对Javascript的原型链中, 原型继承与标识符查找有些迷惑,
如, 如下的代码:
- function Foo() {};
- var foo = new Foo();
- Foo.prototype.label = "laruence";
- alert(foo.label); //output: laruence
- alert(Foo.label);//output: undefined
今天看到了如下这个图:
另外, 在Javascript Object Hierarchy看到:
The prototype is only used for properties inherited by objects/instances created by that function. The function itself does not use the associated prototype.
也就是说, 函数对象的prototype并不作用于原型链查找过程中,
今天在firefox下发现(因为firefox通过__proto__暴露了[[prototype]]), 真正参与标识符查找的是函数对象的__proto__,
- function Foo() {};
- var foo = new Foo();
- Foo.__proto__.label = "laruence";
- alert(Foo.label); //output: laruence
- alert(foo.label);//output: undefined
而, 显然的:
- function Foo() {};
- alert(Foo.__proto__ === Foo.prototype); //output: false
另外, 也解释了,
- alert(Object.forEach); // undefined
- Function.prototype.forEach = function(object, block, context) {
- for (var key in object) {
- if (typeof this.prototype[key] == "undefined") {
- block.call(context, object[key], key, object);
- }
- }
- };
- alert(Object.forEach);
- alert(Function.forEach);
- alert(Object.forEach === Function.forEach); // true
建议继续学习:
- 轻量级在线原型设计工具mockingbird (阅读:3999)
- 产品交互原型设计工具分享 (阅读:2479)
- 原型: 新浪微博客户端 (阅读:2189)
- 非原型 不设计 (阅读:1961)
- Javascript继承-原型的陷阱 (阅读:1940)
- 高效输出移动app产品原型 (阅读:1750)
- 关于快速原型的一点纠结 (阅读:1627)
- 页面线框图教程(之七):不需要存在的原型 (阅读:1486)
- JavaScript原型之路 (阅读:1437)
- iOS设备上高效演示APP原型的方法总结 (阅读:1314)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Javascript的this用法
后一篇:jRaiser揭秘――事件监听兼容处理 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: 原型 原型链
- 发布时间:2010-05-14 13:49:08
建议继续学习
近3天十大热文
- [482] Go Reflect 性能
- [13] [译]Google Chrome中的高性能网
- [12] jQuery性能优化指南
- [12] 精于图片处理的10款jQuery插件
- [11] Mac下.apk的反编译
- [11] Linux Used内存到底哪里去了?
- [11] 什么是DNS劫持和DNS污染?
- [10] rsync同步的艺术
- [10] vim入门,进阶与折腾
- [10] webapp网页调试工具Chrome Dev