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数组使用调用方法汇总
Dec 08 Javascript
JavaScript的document对象和window对象详解
Dec 30 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
Javascript中With语句用法实例
May 14 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
js操作浏览器的参数方法
Jan 21 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
微信小程序实现选项卡功能
Jun 19 Javascript
bmob js-sdk 在vue中的使用教程
Jan 21 Javascript
Javascript节流函数throttle和防抖函数debounce
Dec 03 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获取数组最大值下标的方法
2015/05/12 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
JS跨域问题详解
2014/11/25 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python 支付整合开发包的实现
2019/01/23 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python os.rename实例用法详解
2020/12/06 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
工程项目建议书范文
2014/03/12 职场文书
绿色小区申报材料
2014/08/22 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
民事和解协议书格式
2014/11/29 职场文书
大学生自荐书范文
2015/03/05 职场文书
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS