JS原型链

》》每一个函数都有一个prototype属性
》》prototype的所有属性和方法都会被构造函数的实例继承
》》这意味着我们可以将那些不变(公共)的属性和方法直接定义在prototype对象属性上

》》prototype就是调用构造函数所创建的那个实例对象的原型 (proto)

》》prototype可以让所有对象实例共享它所包含的属性和方法。也就是说,不必在构造函数中定义对象信息,而是可以直接将这些信息添加道原型中
》》实例对象与原型之前的连接,叫做原型链
》》每个对象都有一个proto属性,指向创建它的构造函数的原型

》》如Person.prototype ,Function.prototype,Object.prototype 其实也是一个对象

 

function Person(){  //Person构造函数 
}
var person = new Person();  //创建一个实例
console.log(  person._proto_ === Person.prototype   );  //true

console.log(Person.__proto__ === Function.prototype); //true

》》每个原型都有一个constructor属性 指向关联的构造函数

function Person ( ) {  }
console.log(  Person  ===  Person . prototype . constructor  );   //true

//顺便学习一个ES5的方法,可以获得对象的原型
console.log(  Object . getPrototypeOf(person) === Person . prototype  )

》》console.log( person.constructor === Person  ); //true
console.log( person .constructor === Person .prototype .constructor  );//true

 

                function Person(){
			
		}
		var person=new Person();
		console.log(person.__proto__ === Person.prototype);// true
		console.log(person.constructor === Person); //true
		console.log(Person.__proto__ === Function.prototype); //true
		//console.log(person.prototype.constructor); //
		console.log(Person.prototype.constructor === Person); //true
		
		console.log(Function.prototype.__proto__ == Object.prototype); //true
		
		console.log( Function.prototype.__proto__.__proto__ === null );//true
		
		console.log( person.__proto__.__proto__.__proto__ === null );//true
		
		console.log( person.__proto__.__proto__ === Object.prototype );//true
		

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值