原型与继承

来源:互联网 发布:java软件是什么 编辑:程序博客网 时间:2024/06/06 02:45

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

原型是面向对象的一个概念,而在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 = '';
继承并不能改变父级的属性和方法,而子级的属性和方法,父级无法访问;在创建原型链过程中,有一点必须注意:先创建原型链,在创建子类对象,不然这个原型链是不成功的。


原创粉丝点击