您现在的位置:首页 --> JavaScript --> Javascript原型链和原型的一个误区
Javascript原型链和原型的一个误区
浏览:2170次 出处信息
之前我对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 (阅读:3996)
- 产品交互原型设计工具分享 (阅读:2477)
- 原型: 新浪微博客户端 (阅读:2186)
- 非原型 不设计 (阅读:1958)
- Javascript继承-原型的陷阱 (阅读:1936)
- 高效输出移动app产品原型 (阅读:1747)
- 关于快速原型的一点纠结 (阅读:1625)
- 页面线框图教程(之七):不需要存在的原型 (阅读:1482)
- JavaScript原型之路 (阅读:1435)
- iOS设备上高效演示APP原型的方法总结 (阅读:1312)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Javascript的this用法
后一篇:jRaiser揭秘――事件监听兼容处理 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: 原型 原型链
- 发布时间:2010-05-14 13:49:08
建议继续学习
近3天十大热文
- [17] [译]Google Chrome中的高性能网
- [14] 最近总结的一些技巧(vim,python,s
- [14] 在FreeNAS/BSD搭建基于Nginx+
- [14] 关于Linux的文件系统cache
- [13] Linux常用系统信息查看命令
- [11] Linux(Ubuntu 10.04)上安装
- [9] Centos yum 安装nginx+PHP
- [8] base64_encode 和 urlenc
- [7] 根据文件大小删除一个特殊文件名的文件
- [7] 浏览器缓存机制