原型与继承

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30101879/article/details/78207877

一.什么是原型或为什么会有原型;

原型是面向对象的一个概念,而在js语言是一种面向过程的语言(pop),弱型语言,是一种脚本语言;面向对象(oop)中也对一个概念叫做‘类’,故在js语言不存在类这个概念,js中为了工程的需要,可以运用代码模拟面向对象的类,也继承面向对象的继承和封装,但无法模拟面向对象的多态;那这么说什么是类呢?无论怎么说,直接上代码:

	function Name() {
				var first = {};
				first.name1 = 'liu';
				first.name2 = 'scott';
				first.ability = '创建名字';
				return first;
			}
                     var myname = Name();

类是一类事物的固有共同特征,描述一类事物;而对象是它的单个个体具有这类事物特征的;

而原型是js提供对象的属性-----prototype;基于构造函数,构造函数,见代码:

                 function Name(age){
				    this.age  = 10;
			        }
			   var name1 = new Name();
原型:是对象中的一个属性

	function Name(age){
				this.age  = 10;
			}
			Name.prototype.height='65cm';//通过类的的原型属性添加一个属性;
			var name1 = new Name();//通过new创建一个对象
			console.log(name1);
                 注:对象中没有找到的属性和方法,会通过原型去查找;
上概念:原型是js为所有函数所创建的一个对象类型的属性,原型当中的属性和方法被所有通过这个函数所创建的对象共享;

二.原型链:

由【对象的__proto__属性】和【对象的构造函数的原型的__protp__属性】构成的链式结构称为原型链。;

不用语言解释,用代码解释:

function Name(age){
				this.age  = 10;
			}
			Name.prototype.height='65cm';
			var name1 = new Name();
			console.log(name1)
			console.log(name1.__proto__);
			console.log(name1.__proto__.__proto__);
			console.log(name1.__proto__.__proto__.__proto__);


最好的解释,对原型链:



继承是与原型链的最好的创建和应用:

	function father() {

			}
			father.prototype.name = 'liu';
			father.prototype.xuexi = function() {
				var num = 1;
				return num + 5;
			}
			var fatherSili = new father();

			function son() {

			}
			son.prototype.age = 19;
			son.prototype = fatherSili;
			var sonSili = new son();
			sonSili.name = '';
继承并不能改变父级的属性和方法,而子级的属性和方法,父级无法访问;在创建原型链过程中,有一点必须注意:先创建原型链,在创建子类对象,不然这个原型链是不成功的。


猜你喜欢

转载自blog.csdn.net/qq_30101879/article/details/78207877
今日推荐