XML Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function A(){
console.log( "...."); this[ "name"] = "liyaohui"; } function B(){ A.call(this); } var b = new B(); alert(b[ "name"]); 这样就实现了js对象的继承 具体是为什么呢?来看看call函数 function A(){ alert(this); } //A(); //A.call(); 此时调用A()和调用A.call()的作用是一样的 再来看看当调用A.call(1)时,弹出的是1; 当调用A.call( "lyzx")时,弹出的是 "lyzx"; 我明明弹出的是this但是A.call(param)会弹出param呢,原来call()方法会把第一个参数当做this来处理 这就可以理解当B的构造函数里面调用A.call(this)时就可以实现B继承A了, 此时this是B的一个实例,A构造函数本来要给自己的实例添加name实行并赋值,而此时this是B的实例所以就把 name属性和值加在了B的实例上,从而实现了继承 |