码迷,mamicode.com
首页 > 编程语言 > 详细

javascript原型链__proto__属性的理解

时间:2018-04-05 20:59:21      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:blog   自己   person   原型链   prototype   创建   访问   理解   一个   

在javascript中,按照惯例,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头。一个方法使用new操作符创建,例如下面代码块中的Person1(可以吧Person1看做是Java或C中的类)。

var Person1 = function(name){

  this.name = name;

}  

在javascript中一个类被new出来的会经历以下过程:

var person1 = new Person1();

等同于  

var person1 = {};

person1.__proto__ = Person1.prototype;

Person.call( person1 );

那么其中的__proto__是什么呢?

简单来说,在javascript中每个对象都会有一个__proto__属性,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去__proto__里去找这个属性,这个__proto__又会有自己的__proto__,于是就这样一直找下去,这就是原型链的概念。

来看下面这段代码:

var Person2 = function(){}

Person2.prototype = {

  say: function(){

    console.log(‘Hello World‘);

  }

}

var person2 = new Person2();

person2.say();

当我们调用person2.say()时,person2中没有say属性,于是person2就去__proto__属性中去找,也就是Person2.prototype,而我们定义了Person2.prototype.say = function(){},于是person2就在Person2.prototype中找到了这个方法。

简单来说就是: person2 => person2.__proto__  => Person2.prototype。

 

javascript原型链__proto__属性的理解

标签:blog   自己   person   原型链   prototype   创建   访问   理解   一个   

原文地址:https://www.cnblogs.com/baolevel/p/8724051.html

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