js的原型模式

在js中每个函数都有一个prototype属性,是一个指向某个对象的指针。这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。感觉有点像java语言中的静态变量(注:不过prototype属性是不能改变值的,静态变量是可以改变值)。


prototype属性定义的方式:

       function Person(){}

Person.prototype.name = "zhangsan";
Person.prototype.age =23;
Person.prototype.sayHello = function(){
return "hello,I'm zhangsan";
};


1.construtor:所有原型对象都有一个construtor属性,他是指向prototype 属性所在的函数的一个指针,可以用下面语句检测:
alert(    Person.prototype.constructor == Person);//true


2.如果对象定义的属性的属性名跟原型的属性名相同,该对象定义的属性将会覆盖原型中的同名属性。

例如: function Person(){}

Person.prototype.name = "zhangsan";


line1:var person1=new Person();

line2:person1.name="wangwu";

alert(person1.name) //wangwu

它先会在person对象中搜索name属性,如果没有name属性就在搜索原型的属性中是否有name属性

注,若没有 line2这一行,那么alert(person1.name)将会输出zhangsan

我们也可以通过delete person1.name 删除person1的name属性,从而保证person1.prototype.name不被覆盖



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值