js原型对象和原型链的理解

原型对象的概念:

  • 原型对象的本质其实是一个Object实例,因为对象沿着原型链最终会指向Object的原型对象。
  • 每个函数都有一个prototype属性,该属性指向的是原型对象
  • 每个实例对象身上都有一个__proto__属性,该属性指向的也是原型对象(隐式原型对象),并且实例的隐式原型对象和构造函数的显示原型对象是全等的。




原型链概念:

  • 查找对象的属性的时候现在自身找,如果自身没有沿着__proto__找原型对象,如果原型对象上还没有,继续沿着__proto__,直到找到Object的原型对象对象, 如果还没有找到返回undefined。我们将沿着__proto__查找的链称作为原型链。

原型的存在主要是为了解决在实例化时,节省内存,可以减少实例化是对象内部的属性或者方法过多,可以将这些属性或者方法放在原型上,实例对象在需要这些属性或者方法时,可以直接调用,js会根据原型链进行查找。

function ProtoF(name,age){
	this.name = name
	this.age = age
	this.showtest=function(){
		console.log('this is show test')
	}
}

ProtoF.prototype.showtest2=function(){
	console.log('this is common way')
}

let obj1 = new ProtoF("zl",'12')
let obj2 = new ProtoF("jhh",'13')

console.log(obj1,obj2)

console.log(obj1.showtest2(),obj2.showtest2())

console.log(obj1.__proto__===ProtoF.prototype)  //注意此处

猜你喜欢

转载自blog.csdn.net/qq_40844662/article/details/108978306