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 相关文章推荐
jQuery LigerUI 使用教程入门篇
Jan 18 Javascript
js arguments,jcallee caller用法总结
Nov 30 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
Apr 30 Javascript
jQuery实现新消息在网页标题闪烁提示
Jun 23 Javascript
JS+Canvas 实现下雨下雪效果
May 18 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
jquery 实现回车登录详解及实例代码
Oct 23 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
javascript  数组排序与对象排序的实例
Jul 17 Javascript
vue中注册自定义的全局js方法
Nov 15 Javascript
Vue中this.$nextTick的作用及用法
Feb 04 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
Javascript UrlDecode函数代码
2010/01/09 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
vue debug 二种方法
2018/09/16 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
Python中的各种装饰器详解
2015/04/11 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Python控制Firefox方法总结
2019/06/03 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
《老山界》教学反思
2014/04/08 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL