js创建对象的几种方式

直接上代码

方法一:

var person=new Object(); //创建了一个对象.
person.name="tom"; //使用person对象对调用name属性,它的值为tom
console.log(person.name); //显示name属性值
person.say=function(){ //对person对象添加了一个say函数。
       console.log("person say");
};
person.say();

方法二:

var person={
    name:"tom",
age:29, say:
function(){ alert("hello person"); } }; //创建了一个对象 person.age=10;//为对象重新赋值 console.log(person.age);

方法三:

//js中定义类是使用function。
var Person = function(name,age){ //我们在定义一个类。 相当于它具有一个有参数的构造函数。
    this.name =name;//类的属性
    this.age=age;
    this.say = function(){ //类的方法.
         console.log("say good");
    }
}
var p = new Person("fox",29); //定义Person类的一个对象p
alert(p.name); //调用name属性

方法四:工厂模式

function createPerson(name,age,job){ 
         var o = {}; 
         o.name = name; 
         o.age = age; 
         o.job = job; 
         o.sayName = function(){ 
         console.log(this.name); 
}; 
         return o; 
} 
var tanya = createPerson("tanya","30","female"); 
var ansel = createPerson("ansel","30","male"); 
tanya.sayName(); 
ansel.sayName(); 

方法五:

var person={
  name:'tony',
  $age:null,
  get age(){
  if(this.$age==null){
    return new Date().getFullYear()-1986;
    }else{
        return this.$age;
    }
},
    set age(val){
      if(!isNaN(val)&&val>0&&val<100){
        this.$age=val;
    }else{
      throw new Error('Incorrect val ='+val)
    }
}
}
var one =Object.create(person);
one.father="li";
one.mother="wang";
//输出one对象自己的属性,这里涉及到原型链
for(p in one){ if(one.hasOwnProperty(p)){ console.log(one[p]);//li,wang } }
原文地址:https://www.cnblogs.com/diantao/p/4604284.html