您现在的位置:首页 --> JavaScript --> Javascript原型链和原型的一个误区
Javascript原型链和原型的一个误区
浏览:2405次 出处信息
之前我对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 (阅读:4280)
- 产品交互原型设计工具分享 (阅读:2722)
- 原型: 新浪微博客户端 (阅读:2460)
- 非原型 不设计 (阅读:2211)
- Javascript继承-原型的陷阱 (阅读:2384)
- 高效输出移动app产品原型 (阅读:2528)
- 关于快速原型的一点纠结 (阅读:1856)
- 页面线框图教程(之七):不需要存在的原型 (阅读:1781)
- JavaScript原型之路 (阅读:1752)
- iOS设备上高效演示APP原型的方法总结 (阅读:1628)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Javascript的this用法
后一篇:jRaiser揭秘――事件监听兼容处理 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: 原型 原型链
- 发布时间:2010-05-14 13:49:08
建议继续学习
近3天十大热文
-
[76] memory prefetch浅析
-
[56] 转载:cassandra读写性能原理分析
-
[54] 深入浅出cassandra 4 数据一致性问
-
[46] 基本排序算法的PHP实现
-
[46] 字符引用和空白字符
-
[43] JS中如何判断字符串类型的数字
-
[42] MySQL半同步存在的问题
-
[40] 获取Dom元素的X/Y坐标
-
[40] Inline Form Labels
-
[39] javascript插入样式