码迷,mamicode.com
首页 > Web开发 > 详细

JS原型和原型链

时间:2019-03-03 15:55:08      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:person   ==   name   ===   获取   bsp   prototype   this   str   

原型和原型链在JS中是比较复杂的一块,接下里开始我们基础知识的学习

  1.prototype和__proto__的区别:prototype原型对象只有函数才拥有的属性,__proto__是所有对象都拥有的属性。

var a = {};
console.log(a.prototype);  //undefined
console.log(a.__proto__);  //Object {}

var b = function(){}
console.log(b.prototype);  //b {}
console.log(b.__proto__);  //function() {}

  2.constructor:默认情况下,所有的原型对象都会自动获取一个constructor属性,这个属性指向prototype属性所在的那个函数

function Person(){
this.name=name;
}
var child = new Person()
child.constructor = Person//true
Person.prototype.constructor === Person//true

   3.__proto__:任何一个JS对象都包括这个属性,他是用于指向创建他的构造函数的原型对象

child.__proto__ === Person.prototype // true

   4.什么是原型链:由于__proto__是所有对象都有的属性,js里万物皆对象,所以会形成一条__proto__链条,递归访问会到头,最后会到null

技术图片

var A = function(){};
var a = new A();
console.log(a.__proto__); //A {}(即构造器function A 的原型对象)
console.log(a.__proto__.__proto__); //Object {}(即构造器function Object 的原型对象)
console.log(a.__proto__.__proto__.__proto__); //null

 

技术图片

 

JS原型和原型链

标签:person   ==   name   ===   获取   bsp   prototype   this   str   

原文地址:https://www.cnblogs.com/advanceCabbage/p/10465891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!