<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script type="text/javascript"> //构造函数方式定义对象 function Person(){ this.name = '张三';//成员属性 this.age = 20;//成员属性 this.say = function(){//成员方法 console.log('我会JavaScript'); }; } var p1 = new Person();//实例化 console.log(p1.name); /****************************************************/ //原型对象方式定义对象 function Person2(){ } Person2.prototype.name = '李四'; Person2.prototype.age = 18; Person2.prototype.say = function(){ console.log('原型对象'); }; var p2 = new Person2(); var p3 = new Person2(); /****************************************************/ //混合方式 function Person3(n,a){ //非将函数类型的成员放到构造函数内部 this.name = n; this.age = a; this.sanwei = ['100cm','90cm','110cm'] } //将函数类型的成员放到原型对象上 Person3.prototype.say = function(){ console.log(1234); }; var p4 = new Person3('李明',20); var p5 = new Person3('王阳',24); /****************************************************/ //动态混合模式 function Person4(n,a){ //非将函数类型的成员放到构造函数内部 this.name = n; this.age = a; this.sanwei = ['100cm','90cm','110cm'] } //判断,如果Person5的原型对象上有say方法,就不需要再次绑定了 if(!Person4.prototype.say){ //将函数类型的成员放到原型对象上 Person4.prototype.say = function(){ console.log(1234); }; } var p6 = new Person4('李明',20); var p7 = new Person4('王阳',24);
/****************************************************/ //字面量方法 var Person5={ name:'王明', age:'22', say:function(){ alert('我学JavaScript'); } }; console.log(Person5.say());
/****************************************************/ //采用内置构造器创建对象 function f2() { var teacher = new Object(); teacher.name = "王老师"; teacher.age = 18; teacher.work = function(){ alert("我教Java"); } alert(teacher.name); alert(teacher.age); teacher.work(); } f2(); </script> </body> </html>