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 相关文章推荐
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
jQuery数组处理方法汇总
Jun 20 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
Vue匿名插槽与作用域插槽的合并和覆盖行为
Apr 22 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 Javascript
基于Element封装一个表格组件tableList的使用方法
Jun 29 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 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
咖啡知识大全
2021/03/03 新手入门
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
用js遍历 table的脚本
2008/07/23 Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
js判断密码强度的方法
2020/03/18 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
python线程池的实现实例
2013/11/18 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
实例讲解Python3中abs()函数
2019/02/19 Python
Python any()函数的使用方法
2019/10/28 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
DBA的职责都有哪些
2012/05/16 面试题
初中生物教学反思
2014/01/10 职场文书
干部考察材料范文
2014/12/24 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
2016特色励志班级口号
2015/12/24 职场文书
小学美术教学反思
2016/02/17 职场文书
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python