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 相关文章推荐
js实现弹出窗口、页面变成灰色并不可操作的例子分享
May 10 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
深入理解JavaScript单体内置对象
Jun 06 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
详解JavaScript中操作符和表达式
Sep 12 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
Sep 14 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
Oct 19 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
Angular 2使用路由自定义弹出组件toast操作示例
May 10 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 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
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
javascript各种复制代码收集
2008/09/20 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
nodejs集成sqlite使用示例
2017/06/05 NodeJs
Django中使用jquery的ajax进行数据交互的实例代码
2017/10/15 jQuery
Vue项目中如何引入icon图标
2018/03/28 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
JS实现小星星特效
2019/12/24 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python 项目转化为so文件实例
2019/12/23 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
校班主任推荐信范文
2013/12/03 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
校园广播稿500字
2014/02/04 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
学校对教师的评语
2014/04/28 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
运动会加油稿30字
2015/07/21 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
能让Python提速超40倍的神器Cython详解
2021/06/24 Python