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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
js中return false(阻止)的用法
Aug 14 Javascript
js日期对象兼容性的处理方法
Jan 28 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
node安装--linux下的快速安装教程
Mar 21 Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
原生JS实现轮播图效果
Oct 12 Javascript
javascript判断一个变量是数组还是对象
Apr 10 Javascript
Element-ui DatePicker显示周数的方法示例
Jul 19 Javascript
js get和post请求实现代码解析
Feb 06 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
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python爬取网易云音乐评论
2018/11/16 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
绩效专员岗位职责
2013/12/02 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
教师工作能力自我评价
2015/03/04 职场文书
土建施工员岗位职责
2015/04/11 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL
windows系统安装配置nginx环境
2022/06/28 Servers