javascript第三天

1.javascript中,每个函数都有一个prototype属性,该属性可以引用一个原型对象;

2.假设一个构造函数:Mnitor(); 则Monitor.prototype所对应的就是原型对象;Monitor.prototype.interface="VAG";给原型对象多加一个interface属性,则之后它在new Monitor();时,newMonitor就会多拥有一个interface的属性;

3.javascript中继承的方法:直接看例子:

function ItemWorkers(){

this.name="";

this.address="";

}


function Workers(_projects){

this.projects=_projects;

}

//指定原型对象为ItemWorkers对象;

Workers.prototype = new ItemWorkers();


function Emcee(_show){

this.show=_show;

}

Emcee.prototype = new Workers("主持");

4.通过原型对象操作属性跟操作自己的属性一样,不过如果原本没有这个属性,或者还没有初始化这个属性的话,所有new出来的对象就会用原型对象的属性;

5.构造函数好一点的写法应该是这样:

var id = 1;//这是一个全局变量,注意看继承中如何使用全局变量;

function ItemWorkers(_name){

this.name = typeof(_name) === 'undefined' ? "张三" : _name;

if(_name) this.id = id++;

}

没传值,就用默认的"张三",有传值就用_name;

id的用法防止ItemWorkers被继承时,会调用了id++,因为继承的时候可以不传_name进去,这样只有在new ItemWorkers(_Name)的时候id才会增加,用于计数~

6.总结一下本地属性和继承属性读取时的内部操作:

判断myObject对象是否有name属性,如果有,返回myObject.name的值

如果myObject对象没有name属性,去查找myObject对象的原型对象,也就是PrototypeObject对象是否有name属性,如果有,返回PrototypeObject.name的值

如果在myObject对象和PrototypeObject对象中都没有name属性,则返回undefined

如果myObject对象和他的原型对象同时拥有name属性时,读取的时候只会用到myObject对象的name属性

7.总结在设置本地属性和继承属性时的内部操作:

判断myObject是否有name属性,如果有,修改myObject.name的值

如果myObject没有name属性,就为myObject对象添加一个name属性,并设置myObject.name的值

为一个对象设置属性值时,无论该对象是否已经拥有该属性,都不会用到原型对象,即使该对象没有要设置的属性,也不会去设置原型对象的相应属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值