论js里 面向对象的原型
一、原型的概念:
1、原型的概念:执行构造函数代码时,js系统会给这个构造函数创建一个原型对象,构造函数中也包含一个prototype属性,指向这个原型对象。
2、原型有什么作用:
a、通过原型给系统构造函数添加一些特殊的方法(如:数组元素的求和)这样通过Array创建出来的对象都具有了这个方法。
b、通过原型给自定义的构造函数添加属性、方法,创建出来的对象所对应的属性、方法就是原型中的属性、方法,不需要再开辟新的空间,节约了内存。
这个案例中使用了(prototype属性,后面有具体介绍)
二、原型相关的属性、函数:
原型属性:通过原型添加在构造函数中的属性;
原型方法:通过原型添加在构造函数中凡人函数;
实例属性:通过原型添加在构造函数中的函数;
实例方法:直接写在构造函数中的方法;
需要注意的是 构造函数 原型对象以及实例之间的关系:
prototype:构造函数中的一个属性,指向他所对应的原型对象;
constructor:构造函数所对应的原型对象中的一个属性,用来指向这个对象所对应的构造函数;
__proto__或者[[prototype]]:实例对象中的原型属性,指向创造他的构建函数对应的原型对象(但我们无法通过此方法访问这个属性,在规定中是不允许的);
三、构造函数创建对象里所运用到的运算符的使用说明:
in运算符可以用来判断某个对象是否含有某个属性,不管是实例的还是他本身的;
eg:alert(‘name’ in cat);//trun
hasOwnProperty:每个实y例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是实例属性还是继承至prototype对象的属性;
function Cat( ){
this.name = name;
}
var cat = new Cat();
var cat1 = new Cat()
Cat.prototype.type = "age"
eg:alert(cat.hasOwnProperty('name')); //true
alert(cat1.hasOwnProperty('type')); //false