// 工厂
function Person1(name, age, job) {
let p = {};
p.name = name;
p.age = age;
p.job = job;
p.say = function () {
console.log('my name is :' + this.name)
}
return p
}
let p1 = Person1('ll', 55, 'ss');
p1.say();
let p2 = Person1('mm', 55, 'ss');
p2.say();
// 构造
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.say = function () {
console.log('my name is :' + this.name)
}
}
let person1 = new Person('lily', 18, 'net');
person1.say();
// 原型
function Person1() { }
Person1.prototype = {
name: 'lily',
brother: ['ll', 'jj', 'mm'],
age: 19,
say: function () {
console.log('~!!!~~~~~~')
console.log('my name is :' + this.name);
console.log('my brother ' + this.brother)
}
}
let person2 = new Person1();
let person22 = new Person1();
person2.name = 'john';
person2.brother.push('cc');
person2.hi = function () {
console.log('my name is:' + this.name + ' and ' + this.age + ' years old')
}
person2.say();
person22.say();
person2.hi();
// 构造原型混合
function Person3(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.brother = ['kk', 'll', 'mm'];
}
Person3.prototype = {
constructor: Person3,
say: function () {
console.log('my name is: ' + this.name)
console.log('my brother~~>', this.brother)
}
}
let person3 = new Person3('lilei', 22, 'mmp');
let person4 = new Person3('hack', 22, 'mmp');
person3.brother.push('cxv');
person3.say();
person4.say();
// 动态原型
function Person4(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.brother = ['kk', 'll', 'mm'];
if (typeof this.say != 'function') {
Person4.prototype.say = function () {
console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
console.log('my name is :' + this.name)
console.log('my brother~~>', this.brother)
}
}
}
let person5 = new Person4('bob', 23, 'teacher');
person5.brother.push('nnnnnnnnn')
person5.say();
let person6 = new Person4('bob', 23, 'teacher');
person6.say();
// 原型链继承
function Person5(name) {
this.name = name
}
Person5.prototype = new Person4('hh', 11, 'kk');
console.log('~~~~~~~~~原型链继承~~~~~~~~~~');
let PPPP5 = new Person5('jjjjj')
PPPP5.say();