JavaScript面向对象与继承(3)

参考再谈JavaScript面向对象思想及继承

基于原型的继承

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

你可能感兴趣的:(JavaScript面向对象与继承(3))