PhoneGap中文网

 找回密码
 立即注册
查看: 17014|回复: 0
打印 上一主题 下一主题

javascript中__proto__与prototype区别

[复制链接]

87

主题

87

帖子

327

积分

中级会员

Rank: 3Rank: 3

积分
327
跳转到指定楼层
楼主
发表于 2017-8-11 16:37:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本文和大家分享的主要是javascript__proto__prototype相关内容,一起来看看吧,希望对大家学习javascript有所帮助。
  __proto__ (隐式原型 implicit prototype link)
  prototype (显示原型 explicit prototype property)
  关系: 隐式原型指向创建这个对象的函数(constructor)prototype
  1.先看一般的对象实例
  var obj = {},
  str = 'nihao',
  num = 99;
  obj.prototype           // => undefined
  str.prototype           // => undefinednum.prototype           // => undefined
  obj.__proto__         //=> Object{...}
  str.__proto__          //=> String{...}num.__proto__          //=> Number{...}
  2.再看Function
  Object.__proto__         //=> function(){...}
  Object.prototype          //=> Object{...}
  String.__proto__          //=> function(){...}
  String.prototype           //=> String{...}
  function Foo() {
  ...
  }
  Foo.__proto__                //=> function(){...}
  Foo.prototype                 //=> Object{constructor: function}
  __proto__ 指向构造函数的原型, 这样保证实例能够访问在构造函数原型中的属性和方法.
  prototype 是方法(Function)特有的属性, 这个属性是一个对象, 包含所有实例共享的属性和方法, 其中有一个属性叫做constructor, 指向原构造函数
  所以有:
  var foo1 = new Foo(),
  foo2 = new Foo();
  foo1.__proto__ ===  Foo.prototype               //=> true
  foo2.__proto__ === foo1.__proto__             //=> true
  Foo.prototype.constructor === Foo           //=> true
  那么Foo.__proto__指向哪里呢?
  Foo.__proto__ === Function.prototype        //=> true
  同理Object, String, Number__proto__都指向 Function.prototype
  那么Function.prototype.__proto__指向哪里?
  Function.prototype.__proto__ === Object.prototype   //=> true
  最后
  Object.prototype.__proto__ === null    //=> true
总结:
  用oop的思维来说, 就是prototype是用来给子类继承的, __proto__ 指向了父类的prototype
来源:简书

it营
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-4-20 12:55 , Processed in 0.035097 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表