SOURCE

// 字面量形式
// var obj = {
//     "name": "张三",
//     "age":21,
//     "fun": function(){
//         console.log(this.name + "已经" + this.age)
//     }
// }

// obj.fun()

//工厂模式
// function creatObject(name, age){
//     // var o = new Object();
//     // o.name = name;
//     // o.age = age;
//     // o.sing = function (){
//     //     console.log(this.name + "已经" + this.age)
//     // }
//     var o = new Array()
//     o[0] = 1;
//     o[1] = 1;
//     return o
// }

// var fn1 = creatObject('zhangsan', 18)
// var fn2 = new fn1
// console.log(fn2)
// console.log(fn1 instanceof Array)

//构造函数方式
// function Fun(name, age){
//     this,name = name;
//     this.age = age;
//     this.clone = function(){
//         console.log(this.name)
//     }
// }

// var obj1 = new Fun('张三',  21)
// var obj2 = new Fun('李四', 26)
// console.log(obj1, obj2, obj1.clone === obj2.clone)

// 原型模式
// function Parent(){

// }
// Parent.prototype.name = 'zhangsan'
// Parent.prototype.age = 19
// Parent.prototype.clone = function(){
//     console.log(this.name)
// }
// // 创建一个实例对象
// var obj = new Parent()
// obj.clone()

// 原型+构造函数模式

function Fun(name, age, sex){
    this.name = name;
    this.age = age;
    this.sex = sex
}
Fun.prototype.clone = function(){
    console.log(this.name)
}

var obj1 = new Fun('zhangsna', 18, 'nan')
var obj2 = new Fun('lisi', 30, 'nv')
console.log(obj1)  //VM5977:6 Fun {name: "zhangsna", age: 18, sex: "nan"}
console.log(obj2)  //VM5500:6 Fun {name: "lisi", age: 30, sex: "nv"}
console.log(obj1.clone()) //zhangsan
console.log(obj2.clone()) //lisi
console.log(obj1.clone === obj2.clone) //true
console 命令行工具 X clear

                    
>
console