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

js对象个人理解及记录

2017-04-06 17:14 288 查看

什么是对象

对象的定义是:无序属性的集合,其属性可以包括基本值、对象或函数。

var car = {};   //比如我们拿一块铁造了一辆车,这的名字叫car /建一个空对象

      car.length = "5m"; //车的长度是5米 /对象的基本值

      car.height = "1.4m";//车的高度是1.4米 /对象的基本值

  car.chair ={length:"0.5m",height:"1m"}; //车里面有椅子,椅子有高度有长度(椅子也是个对象)/对象里面的对象

  car.drive();  //车可以开 /对象的函数(方法)

属性是对象内存在的名称和值。例如 car.length = "5m";

方法是对象能够调用的动作。例如car.drive();

回顾下函数的定义:无序属性的集合,其属性可以包括基本值、对象或函数。

           car这个对象里面,有基本值,有对象,有函数。这些东西在car对象里面是无序。

 

上面的代码和下面的代码运行结果是一样的。(也许更好理解点)

var car = {              

  length:"5m",  //车有长度(基本值)

  height:"1.4m",   //车有高度(基本值)

  chair:{length:"0.5m",height:"1m"}, //车里有椅子(对象)

  drive:function (){console.log("car go")} //车可以开(函数或叫方法)

}

对象的创建:

var em = {}; //直接创建

var ob = new Object(); //构造函数方式创建

var cr = Object.create({x:1,y:2}); 

工厂模式

function createPerson(name,age,sex){
  var p = new Object();
  p.name = name;
  p.age = age;
  p.sex = sex;
  p.message=function(){
    console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);
  }
  return p;
}
var person = createPerson("李四",18,"男");

构造函数模式

function Person(name,age,sex){

  this.name = name;

  this.age = age;

  this.sex = sex;

  this.message = function(){

    console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);

  }

}

var person = new Person("李四",18,"男");

原型模式(有缺陷不可单独使用)

function Person(){}

Person.prototype.name = "李四";

Person.prototype.age= 18;

Person.prototype.sex= "man";

Person.prototype.message= function(){

  console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);

}

var person = new Person();

person.message();

组合使用构造函数模式和原型模式(推荐使用)

function Person(name,age,sex){  

  this.name = name;

  this.age = age;

  this.sex = sex;

}

Person.prototype={

  constructot:Person,

  message:function(){

    console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);

  }

}

var person1 = new Person("李四",18,"男"),

  person2 = new Person("王五",19,"男");

动态原型模式(推荐使用)

function Person(name,age,sex){

  this.name = name;

  this.age = age;

  this.sex = sex;

  if(typeof this.message !="function"){  

    Person.prototype.message= function(){

      console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);

    }

  }

}

var person = new Person("李四",18,"男");

寄生构造函数模式

function Person(name,age,sex){

  var p = new Object();

  p.name = name;

  p.age = age;

  p.sex = sex;

  p.message = function(){

    console.log('name:'+this.name+",age:"+this.age+",sex:"+this.sex);

  }

  return p;

}

var person = new Person("李四",18,"男");

稳妥构造函数模式(适合在安全的环境下使用)

function Person(name,age,sex){

var p = new Object();

  p.name = name;

  p.age = age;

  p.sex = sex;

  p.message = function(){

    console.log('name:'+name+",age:"+age+",sex:"+sex);

  }

  return p;

}

var person = Person("李四",18,"男");

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: