JS prototype原型问题


var a = {
    test :  function () {
    }
}

function b() {   // b 构造函数
    this.j=3;
}

var t = new b(); //T实例

b.prototype ; // b 的原型对象
b.__proto__; //?有没有这种写法
t.__proto__; //?有没有这种写法
t.prototype; //?有没有这种写法
a.prototype; //?有没有这种写法
a.__proto__; //?有没有这种写法

想问一下什么时候用prototype 然后b.__proto__; //?有没有这种写法
t.__proto__; //?有没有这种写法
t.prototype; //?有没有这种写法
a.prototype; //?有没有这种写法
a.__proto__; //?有没有这种写法


初始状态只有函数有prototype.
实例的__proto__指向其构造函数的prototype.
函数也有__proto__因为函数是Function函数构造函数的实例。


除去自行添加的情况。。。。

所有对象(除了非常特殊的一个,可不考虑)都有__proto__ 属性,只有函数才具有prototype属性。
所以只有t.prototypea.prototype是没有的。其他都是有的。

function b() {};
var t = new b();

这样的代码,可以看作是b是类,tb类的一个实例。
比如

// class Object() {}
var obj = new Object();
var obj2 = new Object();

这样objObject类的一个实例。在面向对象的编程中,一些具有共性的对象叫做一个类,因此这些对象有一些相同的方法。所以可以在定义类的时候定义这些具有共性的方法,某种类的实例可以直接访问调用些方法。比如obj.toString(); obj2.toSTring()。显然如果是obj.toString = function(){} 这样定义,是不好的。

JS中给出的方案是,在类(e.g.Object)中定义一个prototype属性,然后在类的实例中定义一个__proto__属性。类的方法定义在prototype,在创建实例的时候__proto__ 赋值为这个值。(e.g. obj.__proto__ = Object.prototype)。 当写下obj.toString()的时候,解释器就可以通过obj.__proto__.toString访问到在类Object.prototype中定义的方法。实现了类中方法的共享。所以下面的代码是可以的。

Object.prototype.myToString = function(){ return "A Object";}
obj.myToString(); // "A Object"
obj2.myToString(); 

上述所说的类(e.g.Ojbect)在JS里面和函数合二为一了。所有对象都有__proto__属性,只有函数才有prototype属性。

继承,以及存在的问题。。。略

JS里的一些语法糖(简写);

var obj = {};
//等价与
var obj = new Object();

function fn() {};
var fn = new Function();



相关阅读:
关于移动端localstorage 手机浏览器无效果
PHP中的$_REQUEST和$_POST|$_GET有什么区别??
react这个错是什么意思,要怎么解决
.htaccess 文件导致的自动加载问题
百度数据图谱的插件
用angularjs怎么获取到data对象里的HeWeather data service 3.0对象里的数据?
router-link 阻止默认的点击事件么?
点击按钮的跳转ui-sref后进入的页面报错,是什么原因呢?
本地测试需要htpps,怎么解决?
jdk1.8关于持久化的api是哪个?为什么在javax包下找不到persistence这个类?
vue里模版如何转字符串
出现resolve-url-loader cannot operate:source-map error
css实现六边形带图片展示
关于react 一个问题(Render HTML string w/JSX expression)
gulp合并js代码问题
mysql怎么实现mssql的if exists() begin...end功能?
关于mongodb多表和检索查询
brew install php56-redis 安装错误
vue2.0时如何结合highlight.js实现代码高亮的?
程序怎么判断windows的隐藏文件/文件夹?



快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 2016年理论学习总结 极端人呐喊 致迷茫空虚的大学生 《公猫拿破仑》读书笔记600字 【精品】总经理助理职责 董事长助理职责 行政助理的职责 税收工作重在服务 甲流引发的喜和悲 感恩地球作文300字 最新安全教育活动总结 小学六年级作文1200字:似是故人来 [物是人非] 花酒 遗弃的流浪猫 留点“刺”痛给自己作文 父亲节,感恩的阳光 亲爱的,为你脱掉了太多,带身体的触摸。(言情小说) 关于正能量的名人最经典语录 绿色踪迹作文900字 坚持自己的信念作文550字 对不起真的没有关系吗 陈瞎子 毕业那年,我们散了 机械星球 痛苦也快乐作文 关于腊八粥的作文:腊八节感怀 一帮一工作总结【精品】 惜言如金的父亲 小学四年级作文400字:姥爷的生日 读书思想汇报 童年趣事-打雪仗500字【精选】 雨后的美作文400字 幽默的三八节微信祝福语 在创业中学习实用知识学会判断 我的弟作文450字 还不快跑作文250字 学习型干部事迹材料 记忆、流离 管理培训学习总结 诗唯言 梦幻城市之测试作文900字 难忘的天坑地缝之旅 信息技术与其他学科整合初探 *局安全工作自查报告 微笑归来 爬梯子 流年作文350字 高一入团申请书例文12月 初中语文第四册《与朱元思书》学习方案(转载) 建管处普法工作总结范文 2016年预备党员培训班学习《共产党宣言》思想汇报

Copyright © 2016 phpStudy |