w8484855@qq.com 发表于 2017-8-11 16:37:14

javascript中__proto__与prototype区别

本文和大家分享的主要是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 来源:简书
页: [1]
查看完整版本: javascript中__proto__与prototype区别