天天看点

js prototype

prototype 原型。

我们每创建一个函数 都会创建一个 prototype的属性,这个属性指向了这个函数的原型对象。

function a(){}  ,a.prototype  ,prototype原型只能运用在对象上,不能运用在对象的实例上

也就是说

a.prototype 是可以的 var a=new a(),  a.prototype 是不可以的。

所有对象的实例共享原型对象。什么意思如下:

function a(){}

a.prototype.name="张三";//为原型对象加一个name的属性。

var a=new a();  alert(a.name) // 张三

var a1=new a(); alert(a1.name)//张三

js 执行过程  a.name 先找 a有没有 name属性,如果没有就去原型对象里找,

当 a有name属性的时候就会屏蔽原型对象里的name 属性(这里是屏蔽不是删除)。

如上:

var a=new a();  a.name="李四";//这是给对象a添加一个name属性,并不是修改了原型对象的name的属性值。

alert(a.name) //李四

当删除了 a.name (delete a.name) 属性,再调用 a.name 又会去原型对象里找到 “张三”。

在js中对象是区分大小的。如上: a.name //undefine

在实例中 有个_proto_属性就是指向原型对象的,但是这个属性无法显示调用。