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里的each使用方法详解
Dec 22 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
javascript实现倒计时(精确到秒)
Jun 26 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
sea.js常用的api简易文档
Nov 15 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
Js和VUE实现跑马灯效果
May 25 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
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python实现类继承实例
2014/07/04 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
Python如何省略括号方法详解
2020/03/21 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
基于PyTorch中view的用法说明
2021/03/03 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
英国名牌男装店:Standout
2021/02/17 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
优秀的计算机专业求职信范文
2013/12/27 职场文书
运动会100米解说词
2014/01/23 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
商超业务员岗位职责
2015/02/13 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
青涩记忆观后感
2015/06/18 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
导游词之峨眉山
2019/12/16 职场文书