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 Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
jquery获取子节点和父节点的示例代码
Sep 10 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
深入理解React中何时使用箭头函数
Aug 23 Javascript
基于JavaScript实现五子棋游戏
Aug 26 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 Javascript
在VUE中使用lodash的debounce和throttle操作
Nov 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
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JQuery live函数
2010/12/24 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
应届生财务管理求职信
2013/11/06 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
大学生作弊检讨书
2014/02/19 职场文书
质量提升方案
2014/06/16 职场文书
世界文化遗产导游词
2015/02/13 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书