var a=[1,2,3];
var b=a;
b=[1,2,3,4];
alert(a)
继承一:复制继承
children:子类
Parent:父类
attribute:Parent.call(this,name,sex)
//这个一般是指构造函数里的属性,这个值是每个对象都不一样的
method:children.prototype=Parent.prototype->对象的引用(地址是一个,修改会改变其它的值)
继承二:类式继承--new构造函数
把JS中的构造函数看做类
Bbb.prototype = new Aaa();//把构造函数也继承了
Aaa:constractor
问题:子类的构造函数也被覆盖成Aaa的;
Bbb.prototype.constructor = Bbb; //修正指向问题
function Aaa(){
this.name = [1,2,4];
}
Aaa.prototype.showName = function(){
alert(this.name);
}
function Bbb(){
Aaa.call(this);
}
/** 解决Aaa的构造函数共享问题
var F = function(){}
F.prototype = Aaa.prototype;
Bbb.prototype = new F();
Bbb.prototype.constructor = Bbb;
**/
var b1 = new Bbb();
b1.name.push(4);
var b2 = new Bbb();
console.log(b2.name)
继承一:原型继承--无new的对象
var a={
name:'小明'
}
var b=cloneObj(a);
b.name='lisa';
b={
name:'1111'
}
alert(b.name); //就近原则,找不到才到原型链里找
alert(a.name);
function cloneObj(obj){
var F=function(){};
F.prototype = obj;
return new F();
}