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下利用arguments实现string.format函数
Aug 24 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
Oct 21 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
ES6概念 Symbol toString()方法
Dec 25 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
Mar 13 Javascript
用Vue写一个分页器的示例代码
Apr 22 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
jQuery实现滑动开关效果
Aug 02 jQuery
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
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
twig模板常用语句实例小结
2016/02/04 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python画双y轴图像的示例代码
2019/07/07 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
工作的心得体会
2013/12/31 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL