您的位置:首页 > Web前端 > JavaScript

javascript对象的几种创建方式

2018-03-08 16:19 246 查看

1.使用工厂方式来创建(Object关键字)

var user=new Object();
user.name="huang";
user.age=21;
user.sayName=function(){
alert("我是"+user.name+"我的年龄"+user.age);
}

user.sayName();

2:使用构造函数创建对象,构造函数始终要应该以一个大写字母开头

它的缺点:就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。
function User(name,age,work){
this.name=name;//this作用域:当前对象 
this.age=age;
this.work=work;
this.sayName=function(){
alert("我是"+this.name+"我的年龄"+this.age+"工作是"+this.work);
};
}
var person=new User("胡一天",18,"明星");

person.sayName();

3,原型模式prototype

function User(){};
    User.prototype.name="胡一天";
    User.prototype.age=18;
    User.prototype.sayName=function(){
    alert("我是"+this.name+"我的年龄"+this.age);
};
var person=new User();
person.sayName();

4.原型模式和构造函数模式

构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性

       function User(name,age){
this.name=name;
this.age=age;
}
User.prototype.sayName=function(){
alert("我是"+this.name+"我的年龄"+this.age);
}
var person=new User("刘昊然",18);

person.sayName();

5.动态原型模式

function User(name,age){  
  this.name=name;  
        this.age=age;   
        if(typeof User.sayName=="undefined"){  
           User.prototype.sayName=function(){  
         alert("我是"+this.name+",我的年龄"+this.age);  
    }  
  User.sayName=true;  
  }  
}   
var camry =new User("凯美瑞",27);  

camry.sayName();

6.寄生构造函数模式

这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码。
寄生模式可以在特殊的情况下为对象来创建构造函数,原因在于我们可以通过构造函数重写对象的值,并通过return返回  重写调用构造函数(创建的对象的实例)之后的对象实例的新的值

function User(name,age){
var person=new Object();
person.name=name;
person.age=age;
person.sayName=function(){
alert("我是"+this.name+",我的年龄"+this.age);
}
return person;
}
var people=new User("白敬亭",18);

people.sayName();

7.稳妥构造函数模式

没有公共属性,而且其方法也不引用this的对象。稳妥对象最适合用在一些安全的环境中(这些环境会禁止使用new和this),或者防止数据被其他的应用改动。稳妥构造函数与寄生构造函数模式类似,但是也有两点区别:1、稳妥模式不使用new操作符调用构造函数2、新创建对象的实例方法不引用thisfunction User(name,age){
var person=new Object();
person.sayName=function(){
alert("我是"+name+",我的年龄"+age);
}
return person;
}
var people=User("白敬亭",18);
people.sayName();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: