Web前端On the Road(成为大牛)@IT·互联网Web前端之路

论js里 面向对象的原型

2017-04-20  本文已影响47人  LiLi原上草

一、原型的概念:

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

最后需要注意的是:使用构造函数创建的对象的constructor属性指向他的构造函数,使用字面量创建的对象的constructor属性指向object。

上一篇 下一篇

猜你喜欢

热点阅读