版权声明:本文为博主原创文章,未经博主允许不得转载。 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 = '';
继承并不能改变父级的属性和方法,而子级的属性和方法,父级无法访问;在创建原型链过程中,有一点必须注意:先创建原型链,在创建子类对象,不然这个原型链是不成功的。