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奇异的arguments分析
Oct 20 Javascript
JsRender for object语法简介
Oct 31 Javascript
关于javascript模块加载技术的一些思考
Nov 28 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
js遍历获取表格内数据的方法(必看)
Apr 06 Javascript
JavaScript正则表达式简单实用实例
Jun 23 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
element-ui的回调函数Events的用法详解
Oct 16 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
Mar 29 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 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图片库imagemagick安装方法
2014/09/23 PHP
php实现websocket实时消息推送
2018/03/30 PHP
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
vue实现文件上传功能
2018/08/13 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
python模块restful使用方法实例
2013/12/10 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
python实现文件快照加密保护的方法
2015/06/30 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
python实现三种随机请求头方式
2021/01/05 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
经典c++面试题六
2012/01/18 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL