< ! DOCTYPE html> 
< html lang= "en" > 
< head> < meta charset= "UTF-8" > < title> 01 _Object构造函数模式< / title> 
< / head> 
< body> < ! -- 
方式一:  Object构造函数模式*  套路:  先创建空Object对象,  再动态添加属性/ 方法*  适用场景:  起始时不确定对象内部数据*  问题:  语句太多
-- > 
< script type= "text/javascript" > var p =  new  Object ( ) p =  { } p. name =  'Tom' p. age =  12 p. setName =  function ( name)  { this . name =  name} p. setaAge =  function ( age)  { this . age =  age} console. log ( p) < / script> 
< / body> 
< / html> 
< ! DOCTYPE html> 
< html lang= "en" > 
< head> < meta charset= "UTF-8" > < title> 02 _对象字面量< / title> 
< / head> 
< body> < ! -- 
方式二:  对象字面量模式*  套路:  使用{ } 创建对象,  同时指定属性/ 方法*  适用场景:  起始时对象内部数据是确定的*  问题:  如果创建多个对象,  有重复代码
-- > 
< script type= "text/javascript" > var p =  { name:  'Tom' , age:  23 , setName:  function ( name)  { this . name =  name} } console. log ( p. name,  p. age) p. setName ( 'JACK' ) console. log ( p. name,  p. age) var p2 =  { name:  'BOB' , age:  24 , setName:  function ( name)  { this . name =  name} } 
< / script> 
< / body> 
< / html> 
< ! DOCTYPE html> 
< html lang= "en" > 
< head> < meta charset= "UTF-8" > < title> 03 _工厂模式< / title> 
< / head> 
< body> < ! -- 
方式三:  工厂模式*  套路:  通过工厂函数动态创建对象并返回*  适用场景:  需要创建多个对象*  问题:  对象没有一个具体的类型,  都是Object类型
-- > 
< script type= "text/javascript" > function createPerson ( name,  age)  { var p =  { name:  name, age:  age, setName:  function ( name) { this . name =  name} } return  p} var p1 =  createPerson ( 'Tom' ,  12 ) var p2 =  createPerson ( 'JAck' ,  13 ) console. log ( p1) console. log ( p2) 
< / script> 
< / body> 
< / html> 
< ! DOCTYPE html> 
< html lang= "en" > 
< head> < meta charset= "UTF-8" > < title> 04 _自定义构造函数模式< / title> 
< / head> < body> < ! -- 
方式四:  自定义构造函数模式*  套路:  自定义构造函数,  通过new 创建对象*  适用场景:  需要创建多个类型确定的对象*  问题:  每个对象都有相同的数据,  浪费内存
-- > 
< script type= "text/javascript" > function Person ( name,  age)  { this . name =  namethis . age =  agethis . setName =  function ( name)  { this . name =  name} } var p1 =  new  Person ( 'Tom' ,  12 ) var p2 =  new  Person ( 'Tom2' ,  13 ) console. log ( p1,  p1 instanceof  Person ) 
< / script> 
< / body> 
< / html> 
< ! DOCTYPE html> 
< html lang= "en" > 
< head> < meta charset= "UTF-8" > < title> 05 _构造函数+ 原型的组合模式< / title> 
< / head> 
< body> < ! -- 
方式六:  构造函数+ 原型的组合模式*  套路:  自定义构造函数,  属性在函数中初始化,  方法添加到原型上*  适用场景:  需要创建多个类型确定的对象
-- > 
< script type= "text/javascript" > function Person ( name,  age)  { this . name =  namethis . age =  age} Person. prototype. setName =  function ( name)  { this . name =  name} var p1 =  new  Person ( 'Tom' ,  12 ) var p2 =  new  Person ( 'JAck' ,  23 ) p1. setName ( 'TOM3' ) console. log ( p1) Person. prototype. setAge =  function ( age)  { this . age =  age} p1. setAge ( 23 ) console. log ( p1. age) Person. prototype =  { } p1. setAge ( 34 ) console. log ( p1) var p3 =  new  Person ( 'BOB' ,  12 ) p3. setAge ( 12 ) 
< / script> 
< / body> 
< / html>