Javascript原型链和原型的一个误区


Posted in Javascript onOctober 22, 2014

之前我对Javascript的原型链中, 原型继承与标识符查找有些迷惑,

如, 如下的代码:

function Foo() {};

var foo = new Foo();

Foo.prototype.label = "laruence";

alert(foo.label); //output: laruence

alert(Foo.label);//output: undefined

今天看到了如下这个图:

Javascript原型链和原型的一个误区

Javascript object layout
另外, 在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
Javascript 相关文章推荐
很全的显示阴历(农历)日期的js代码
Jan 01 Javascript
javascript中不等于的代码是什么怎么写
Dec 29 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
May 26 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
vue调用语音播放的方法
Sep 27 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
js实现时钟定时器
Mar 26 Javascript
Vue如何实现变量表达式选择器
Feb 18 Vue.js
Javascript this 关键字 详解
Oct 22 #Javascript
Javascript 构造函数详解
Oct 22 #Javascript
Javascript中Array.prototype.map()详解
Oct 22 #Javascript
javascript数组详解
Oct 22 #Javascript
Javascript 数组排序详解
Oct 22 #Javascript
Javascript中arguments对象详解
Oct 22 #Javascript
Javascript中的默认参数详解
Oct 22 #Javascript
You might like
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP的基本常识小结
2013/07/05 PHP
如何让CI框架支持service层
2014/10/29 PHP
php实现的简单检验登陆类
2015/06/18 PHP
thinkphp分页集成实例
2017/07/24 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python解析基于xml格式的日志文件
2017/02/25 Python
Python探索之修改Python搜索路径
2017/10/25 Python
python skimage 连通性区域检测方法
2018/06/21 Python
python实现弹窗祝福效果
2019/04/07 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
Java的五个基础面试题
2016/02/26 面试题
大学生会计职业生涯规划范文
2014/02/28 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
公司授权委托书范本
2014/04/03 职场文书
家长评语怎么写
2014/12/30 职场文书
美术教师求职信范文
2015/03/20 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
linux目录管理方法介绍
2022/06/01 Servers