始终是做官的,一瞬间脸上挂满笑意,快步来到近前,林风转身,打量来人,“阁下是?”

有不少唯恐天下不乱的媒体,在发布了这么个消息的同时,刻意配上了历届最强新声和青年歌手大赛的负面新闻链接,甚至直接提及了历届最强新声的种种非议,其意昭然。

爱博娱乐手机版

“下山!”大唐士兵群情激昂,一齐举臂高呼,大队人马开始浩浩荡荡向山下开去。
叶扬点了点头,走了进去。当他经过一条通道的时候,便是看到了已经被剥了皮的那些人。

“她就交给你了,如果不相信的话,那么就让她在这里住几天,等巴洛克工作社的人来杀她的时候她已经会合作一点的。”刘皓知道娜美最适合谈判了,本来布玛也十分犀利,但是现在布玛的研究几乎到了最关键的地步,这可是关乎他和布玛的未来,能不打扰的话刘皓尽量不会让除了研究以外的事情打扰到她。

javascript 之原型、原型链-14


原型

原型是一个对象,每个函数对象(在javascript 之对象中说过函数也是对象 )都有一个属性(prototype)指向这个对象--原型对象,这个对象的作用是让所有对象实例共享原型对象中的属性、方法。即我们可以把公共的属性、方法写在这个原型中,所以说js中的继承是基于原型实现的;

构造函数、原型、实例

每个构造函数都有一个原型对象,原型对象包含一个指针指向构造函数,而实例包含一个指向原型对象的内部指针;

1    function Person(name,age){
2         this.name=name;
3         this.age=age;
4     }
5     console.dir(Person);

如图:

Person 有个属性prototype 指向原型对象

原型对象通过constructor 指向函数对象

  • prototype 函数才具有的属性,指向构造函数的原型对象;
  • JavaScript中的对象,都有一个内置属性 [[Prototype]] (在ES5之前没有标准的方法访问这个内置属性,但是大多数浏览器都支持通过__proto__来访问。ES5中有了对于这个内置属性标准的Get方法Object.getPrototypeOf()) _proto_ 指向创建它的函数对象的原型对象;

Object.getPrototypeOf() 可以查看MDN的介绍:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf

原型链

概念

  原型链是一种机制,指的是JavaScript每一个对象、包括原型对象都有一个内部的[[proto]]属性,它指向创建它的函数对象的原型对象。这个属性是编程不可见的(虽然ES6标准中开放了这个属性,然而浏览器对这个属性的可见性的支持不同)。

  当一个对象需要引用一个属性时,JavaScript引擎首先会从这个对象自身的属性表中寻找这个属性标识,如果找到则进行相应读写操作,如果没有在自身的属性表中找到,则在_proto_属性引用的对象(原型对象)的属性表中查找,如此往复,直到找到这个属性或者_proto_属性指向null为止(object prototype )。

对象的_proto_的引用链,称为原型链。

注意:有一个性能优化的问题:原型链越深,耗费的时间越多,同理作用域链也是这样。

作用

  原型链的存在,主要是为了实现对象的继承。

涉及几个重要的概念

理解原型链,需要从几个概念入手。

1、函数对象

在JavaScript中,函数也是对象。

2、原型对象

当定义一个函数对象时,会包含一个内部属性,叫prototype称之为原型对象。

 

1 //普通对象
2 var a = {};
3 console.log(a.prototype);//undefined

3、__proto__

在创建对象的时候,都会有一个[[proto]]的内部属性,用于指向创建它的函数对象的prototype(函数对象prototype 指向函数的原型对象)。原型对象也有[[proto]]属性,因此在不断的指向中,形成了原型链。

举个例子来说,我们将对象F的原型对象修改一下,就可以清楚看到上述的关系

1 function F(){};
2 var f = new F();
3 console.log(f.__proto__);

4、new

当使用new去调用构造函数时,相当于执行了

1 var o = {};
2 o.__proto__ = F.prototype;
3 F.call(o);

在原型链的实现上,new起到了很关键的作用。

5、constructor

原型对象prototype上都有个constructor属性,指向它的函数对象,如上图。

在实际运用中,经常这样写:

1 function F(){};
2 F.prototype = {
3     constructor : F,
4     doSomething : function(){}
5 }

这里要加constructor是因为重写了原型对象,之前的constructor属性跟重写的原型对象没有任何关系,所以需要自己手动补上。

6、原型链结构

1 function F(){
2     this.name = "zhang";
3 };
4 var f1 = new F();
5 var f2 = new F();

 

 完整原型链

当前文章:http://hnhdqp.com/array/f2varoohms.html

发布时间:2018-11-18 04:15:19

金麒麟娱乐手机版 手机版银河线上娱乐 线上娱乐品牌线上娱乐 喜来登平台娱乐 亿豪娱乐 星期8城娱乐 盈博线上娱乐 凯澳娱乐

编辑:海密乙

相关新闻

续航不再是困扰 OPPO R9 Plus让你用尽兴

2018-11-18 09:17:52

太原凸鹊迫集团公司

“B2C第一股”麦考林宣布退市 全力转型健康美丽行业

2018-11-18 05:30:42

吐鲁番檬浅会展服务有限公司

应采儿和闺蜜辣妈比基尼齐秀好身材(图)

2018-11-18 03:01:05

襄阳醇欧购电子科技有限公司

贝克汉姆私密邮件流出 已紧急报警求助

2018-11-18 02:41:19

锦州叭乜工作室

热门推荐

  • 德味儿!蔡司Loxia 25mm f/2.4镜头官方样张欣赏
  • 育碧:为什么我们爱PC?创新强、性能优越
  • 有人欢喜有人愁:2017年家电市场全面总结
  • AI算法把女星面部嫁接到成人电影上:效果以假乱真
  • 揭秘阿里拍卖平台:能买梅花鹿、飞机的神奇地方
  • 中东危局加剧全球经济面临严重威胁
  • 小米之家深圳旗舰店正式开业,雷军接受央视采访
  • 索尼新应用PlayLink将至 可用手机玩主机游戏
  • 东风风行新7座SUV谍照曝光 或为景逸X7
  • 四川共召集消防救援气力116车641人全力投入救援
  • 河北新闻网版权所有 本站点信息未经允许不得复制或镜像 法律顾问:澳门老虎机 老虎机游戏官网下载
  • pt免费送体验金68 copyright ? 2000 - 2016
  • 新闻热线:0311-67563366 广告热线:0311-67562966 新闻投诉:0311-67562994
  • 冀ICP备 09047539号-1 | 互联网新闻信息服务许可证编号:1312006002
  • 广播电视节目制作经营许可证(冀)字第101号|信息网络传播视听节目许可证0311618号
  • tb通宝娱乐pt老虎机出纳柜台 乐虎pt安卓客户端下载 亚虎777娱乐pt 真人视讯ag国际馆手机客户端