一.原型对象虽然可以对所有实例的属性跟方法共享,但是他的局限性也是很明显的,正是因为共享的特征,也导致原型存在最大的问题
[解决方案]:我们一般组合使用构造函数式和原型模式,在实际开发中,这种模式也应用最广泛
【egg】:
function Person(){
}
Person.prototype = {
constructor:Person,
name:"z3",
age:20,
job:"程序员",
friend:['李四','王五'],
sayName:function(){
alert("我的名字");
}
}
var p1 = new Person();
var p2 = new Person();
p1.friend.push("赵六");
alert(p1.friend);
alert(p2.friend);
function Person(name,age,friend,job){
this.name = name;
this.age = age;
this.friend = friend;
this.job = job;
}
Person.prototype = {
constructor:Person,
sayName:function(){
alert(this.name);
}
}
var p1 = new Person("z3",20,['王五','赵六'],'技术总监');
var p2 = new Person('z4',30,['哈哈哈','你好'],'boss');
alert(p1.friend);
alert(p2.friend);
上边的第一个例子,体现出了原型继承的劣势,解决方案是通过后边的构造函数 + 原型继承的形式的方式解决的;
网友评论