j
JS继承方法有多种,比如使用call进行对象冒充(相当于Java中的对象内聚)
JS继承的还可以使用Object.create(原型对象)来实现
如:
<script type="text/javascript">
var person = {
age:20,name:"xiaoku",sex:"male"
};
var stu = Object.create(person);
//stu的原型是person 委托实现了这一机制
stu.age = 22;//覆盖age属性,作为自己的属性 person原型不改变
stu.birthday = "1991-09-09";
document.write(stu.age+" "+stu.name+" "+stu.sex);
console.dir(stu);
alert(Object.getPrototypeOf(stu).age);
</script>
Javascript的引擎会先看当前的这个对象中是否有这个属性,如果没有的话,就会查找他的Prototype对象是否有这个属性,一直继续下去,直到找到或是直到没有Prototype对象
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JS方法重载,可以借用Object.getPrototypeOf和call方法来实现。
如:
<script type="text/javascript">
//getPrototypeOf 通过这个对方法进行重载
var book = {
name:"Java编程",
buy:function(){
alert("I buy a book name call:"+this.name);
}
};
var cattonBook = Object.create(book);
cattonBook.buy();//重载前,调用原型的方法
cattonBook.money = 20;//增加属性
cattonBook.buy = function(){
Object.getPrototypeOf(this).buy.call(this);//调用原型book中的buy方法
alert("付款需要:"+this.money);
}
cattonBook.buy();//重载后方法
</script>