原型和原型链

首先我们要知道三个对象:

  • 函数对象
  • 实例对象
  • 原型对象

1.函数对象:函数对象即为一个重载了括号 " ( ) " 的对象,使得可以像函数一样调用(总的来说就是自己定义封装的函数,再进行调用)
2.实例对象:new出的对象或者{ }
3.原型对象:所有的函数对象都有一定有一个对应的原型对象,所有的原型对象都是被Object函数对象创建出来的

在这里插入图片描述
原型和原型链都是围绕着这张图展开说明

Star 构造函数 :构造函数用于创建对象,初始化对象的值,构造函数中定义的方法,本质是属性,需要占用存储空间

		function Star(uname, age) {
			Star.sex = "男";//静态成员:通过函数名Star.sex 可以直接访问的成员,不属于任何的对象,实例共享
			this.uname = uname;
			this.age = age;
			this.sing = function() {
				console.log('唱歌')
			}
		}

ldh 实例对象:通过上面的Star 函数 new一个实例对象

		var ldh=new Star('刘德华',88);
		console.log(ldh);//打印 Star {uname: '刘德华', age: 88, sing: ƒ}
		console.log(ldh.uname);//打印---刘德华
		ldh.sing  //打印---唱歌

原型constructor 构造函数

  • 每个构造函数 都有一个prototype属性找到 原型对象
  • 原型对象 可以使用constructor 来找到构造函数(这里Star是构造函数)
  • 实例对象的proto属性可以找到原型对象
  • Object原型对象的proto的是null
function Star(uname, age) {
			this.uname = uname;
			this.age = age;
		}
		Star.prototype.sing = function() {
			console.log('唱歌');
		}
		Star.prototype.movie = function() {
			console.log('演电影');
		}
		var ldh = new Star('刘德华', 18)
		都打印Star,都指向的是star原型对象的prototype
		console.log('Star.prototype.constructor---',Star.prototype.constructor);
		console.log('ldh.__proto__.constructor---',ldh.__proto__.constructor);
		打印---true
		console.log(Star.prototype.constructor===ldh.__proto__.constructor);

JavaScript 成员查找机制(规则)

查找原型的机制也是和图一样,按着箭头一层一层往上面找,直到最后为null

  1. 当访问一个对象的属性或方法时,首先查找这个对象自身有没有
  2. 如果没有就查找它的原型(也就是 proto 指向的prototype 原型对象 )
  3. 如果还没有找到就查找原型对象的原型(Object的原型对象)
  4. 依次类推一直找到Object为止( null )
  5. proto 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条线路

原型中的this指向

一句话盖括,谁调用函数 函数this就指向谁

使用原型对象扩展方法

创建一个方法,使数组里所有的数字相加

// 求数组的和
		Array.prototype.sum = function() {
			let num = 0;
			for(var i = 0;i<this.length;i++) {
				num += this[i];
			}
			return num;
		}
		let arr = [1,2,3,4];
		let result = arr.sum();
		console.log(result);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值