原型、原型链

什么是构造函数?
  构造函数首字母大写,普通函数是小写,其实和普通函数一样。

普通函数和构造函数的区别?
  构造函数可以通过new关键字去调用,构造函数和普通函数一样,自身也是有prototype显示原型属性。

如何创建实例对象?
  构造函数通过new关键字去调用返回一个实例对象,该实例对象有一个__proto__隐式原型属性,并自动继承构造函数的prototype原型对象。

原型

原型分两种 :prototype显式原型 、 __ proto__隐式原型
 1. 函数:有一个prototype显式原型属性,默认指向一个空的Object对象。
 2. 对象:有一个__proto__隐式原型属性,默认继承构造函数的显式原型属性。

构造函数Fun:
	function Fun(){
		console.log(this) // 指向new构造函数的实例对象funObj
		this.name = '小明'
		this.age = 100
	}
	Fun.prototype.code = '9993333'    // 在构造函数的prototype显示原型对象添加code属性
	Fun.prototype.age = '198'   // 会被实例对象__proto__隐式原型对象添加age属性重新赋值
	const funObj = new Fun();   //实例对象funObj:(new Fun构造函数返回的实例对象 )
	funObj.__proto__.age = '199'   // 在实例对象的__proto__隐式原型对象添加age属性
	
	console.log(funObj.age, funObj.code, funObj.name)  //100 199 小明    // 这个查找的过程就叫原型链
	console.log(funObj.__proto__ === Fun.prototype) // true 构造函数的显性原型prototype ===实例对象funObj隐式原型 __ proto__
	
普通对象obj:
	let obj = {name:'888'}
	obj.__proto__.age = 20
		
	console.log(obj.age)  // 20  对象内部没有这个属性就去自己的原型上找 

原型链

原理:当我们new一个构造函数,会返回一个新的实例对象,这个实例对象会继承构造函数的prototype原型属性;当我们访问实例对象上的属性时,如果没有这个属性,它就会往上(创建出它的函数中)查找,这个查找的过程就叫原型链。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值