function Animal(name = 'Animal'){
this.name = name
this.getName = function () {
return this.name
}
}
Animal.prototype.setName = function(name) {
this.name = name
}
console.log(Animal.prototype)
console.log(Animal.constructor)
console.log(Animal.__proto__)
console.log('-----animal实例-----')
let animal = new Animal()
console.log(animal.constructor)
console.log(animal.__proto__)
console.log('--------------------前提--------------------')
function Cat () {
this.name = 'Cat'
}
Cat.prototype = new Animal()
console.log(Cat.prototype)
console.log(Cat.constructor)
console.log(Cat.__proto__)
console.log('-----cat实例-----')
let cat = new Cat()
console.log(cat)
console.log(cat.constructor)
console.log(cat.__proto__)
console.log('--------------------Cat--------------------')
function Dog (name) {
Animal.call(this, name)
}
console.log(Dog.prototype)
console.log(Dog.constructor)
console.log(Dog.__proto__)
console.log('-----dog实例-----')
let dog = new Dog("dog")
console.log(dog)
console.log(dog.constructor)
console.log(dog.__proto__)
console.log('--------------------Dog--------------------')
function Duck (name) {
Animal.call(this, name)
}
Duck.prototype = new Animal()
console.log(Duck.prototype)
console.log(Duck.constructor)
console.log(Duck.__proto__)
console.log('-----duck实例-----')
let duck = new Duck('duck')
console.log(duck)
console.log(duck.constructor)
console.log(duck.__proto__)
console.log('--------------------Duck--------------------')
function creactBird (obj) {
function F() {}
F.prototype = obj
return new F()
}
let Bird = new Animal()
let bird = creactBird(Bird)
console.log(bird)
console.log(bird.constructor)
console.log(bird.__proto__)
console.log(bird.name)
console.log('--------------------Bird--------------------')
var Bird2 = new Animal();
function creactBird2 (obj, name) {
var sub = creactBird(obj);
sub.birdName = name;
return sub;
}
let bird2 = creactBird2(Bird2, 'bird2')
console.log(bird2)
console.log(bird2.constructor)
console.log(bird2.__proto__)
console.log('--------------------Bird2--------------------')
let subBird3 = creactBird(Animal.prototype)
function Bird3 () {
Animal.call(this)
}
Bird3.prototype = subBird3
subBird3.constructor = Bird3
let bird3 = new Bird3()
console.log(bird3)
console.log(bird3.constructor)
console.log(bird3.__proto__)
console.log('--------------------Bird3--------------------')
console