关于Javascript 对象(object)的prototype


Posted in Javascript onMay 09, 2014

Javascript中的每个对象(object)都会有 prototype 。试一下:

var Richard = new Object(); 
alert(typeof(Richard.prototype));

结果令人郁闷,浏览器弹出来的是 undefined……

到底是怎么回事呢?

再看一个例子:

function Richard(){} 
alert(typeof(Richard.prototype));

上面的例子似乎说明,只有 function 对象才有 prototype, 而一般的 Object 对象是没有 prototype 的,事实怎样呢?

我们再来执行一句就明白了:

var Richard = new Object(); 
alert(Richard.__proto__);

是不是明白了?

其实我们都有一个误区,就是认为形成 Javascript 对象的prototype chain 的 prototype 就是一个名字为 prototype 的属性,而且是可以访问的。其实,Javascript 的 prototype 和 名字为 prototype 的属性在一开始一点儿关系都没有,是两个不同的事物。

对于一般对象来说,我们只能通过 __proto__ 这样的属性去访问从 Object 对象继承来的 prototype;

对于函数对象来说,在其建立的时候,已经将 Function对象的 prototype 赋值给了 prototype 属性。

Javascript 相关文章推荐
javascript中不提供sleep功能如何实现这个功能
May 27 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
Sep 04 Javascript
PHP守护进程实例
Mar 06 Javascript
JavaScript制作简易的微信打飞机
Mar 31 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
Feb 23 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
Jul 27 Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 Javascript
原生JS实现层叠轮播图
May 17 Javascript
vue bootstrap小例子一枚
Jun 09 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
javascript字母大小写转换的4个函数详解
May 09 #Javascript
js统计页面的来访次数实现代码
May 09 #Javascript
JavaScript Array对象扩展indexOf()方法
May 09 #Javascript
js获取鼠标点击的位置实现思路及代码
May 09 #Javascript
用js格式化金额可设置保留的小数位数
May 09 #Javascript
JQuery动画animate的stop方法使用详解
May 09 #Javascript
Javascript玩转继承(三)
May 08 #Javascript
You might like
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
php+mysql数据库查询实例
2015/01/21 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
javascript 模拟点击广告
2010/01/02 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
廉洁校园实施方案
2014/05/25 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
vue router 动态路由清除方式
2022/05/25 Vue.js