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 相关文章推荐
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
Document对象内容集合(比较全)
Sep 06 Javascript
jQuery Validation实例代码 让验证变得如此容易
Oct 18 Javascript
浏览器常用高宽的jquery插件
Feb 24 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
Apr 14 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 Javascript
js 利用className得到对象的实现代码
Nov 15 Javascript
解析Node.js基于模块和包的代码部署方式
Feb 16 Javascript
JS弹出窗口插件zDialog简单用法示例
Jun 12 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
Jun 23 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
js下函数般调用正则的方法附代码
2008/06/22 PHP
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
python代码制作configure文件示例
2014/07/28 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
python实现两个文件合并功能
2018/04/01 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
经典c++面试题四
2015/05/14 面试题
中医临床专业自我鉴定范文
2014/01/15 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
自我推荐信怎么写
2015/03/24 职场文书
停电放假通知
2015/04/14 职场文书
信访维稳承诺书
2015/05/04 职场文书
电影雷锋观后感
2015/06/10 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android