基于原型的继承
function Animal(name) {
let name = name; // 私有属性
this.getName = function() { // 特权方法 也是实例方法
this.log(name);
return name;
}
this.color = 'none'; // 实例属性
this.say = function() { // 实例方法
console.log(this.color);
}
}
Animal.prototype.a = 1; // 公共属性
Animal.prototype.log = function(sth) { // 公共方法
consoel.log(sth)
}
js没有严格意义的私有成员,所以对象属性都算做公开,所以我们在私有 公有上不做赘述,只是判断改属性是在实例上 还是在构造函数的prototype上。
私有属性:指的是构造器内部的属性,构造器外部不可以获得,只能通过特权方法来访问。
特权方法:一般称有权访问私有变量和私有函数的公有方法为特权方法,但是js没有共有方法的概念,这个方法是挂载在实例上的。
实例属性(方法):实例属性指的是挂载在实例自身的属性。
公共属性(方法):公共属性指的是挂在在构造器的prototype对象上的属性。
1. 直接修改prototype