JavaScript学习总结--建立对象

ECMA-262定义的对象是:无序属性的集合,其属性能够包含基本值、对象或者函数javascript

说白了就是把一组特定的变量和方法封装起来前端

那么咱们先建立一个对象java

var person=new Object();
person.name="Sakura";
person.age=22;
person.job="前端开发";
person.sayName=function(){
  console.log(this.name);  
}
//当一个变量被封装在一个对象中时,这个变量就能够称为该对象的一个属性
//一样的,当一个函数被封装在一个对象中时,这个函数就能够称为该对象的一个方法

实际上这种写法较为古老,因此咱们能够用对象字面量的方法重写一下程序员

var person={
  this.name="Sakura",
  this.age=22,
  this.job="前端开发",
  this.sayName=function(){
    console.log(this.name);  
  }
}

这样一个对象就被建立出来了,当咱们须要调用对象的某个方法,或者获取对象的某个属性时,就能够用“.”号来调用数组

var a=person.name;    //获取对象的属性
console.log(a);        //Sakura    

person.sayName();    //调用对象的方法

通常来讲这样建立的对象在某些状况下能知足咱们的一些需求,然而事实状况是咱们可能在实际工做中须要建立大量的具备某些相同特征(属性或方法)的对象函数

这就涉及到了代码的复用性,毕竟谁也不肯意一遍一遍的写重复的东西,因此聪明的程序员们发明了几种可复用的对象建立方法】this

1.工厂模式spa

工厂模式抽象了建立具体对象的过程,实际上就是一个封装特定接口用来建立对象的函数设计

function createPeson(name,age,job){
  var obj=new Object();
  obj.name=name;
  obj.age=age;
  obj.job=job;
  obj.sayName=function(){
    console.log(this.name);
    //要注意这里的this表明obj,而非createPerson
  }
  return obj;
}

这个createPerson就是工厂方法,它接收三个参数,以后会在内部建立一个新的对象,并将属性和方法初始化,最后返回出这个对象code

var person_01=createPerson("Sakura",22,"前端开发");
var person_02=createPerson("Misaka",20,"网页设计");

这样一来咱们能够不用写过多冗余的代码,仅仅用一个工厂方法就能够建立更多不一样的对象

凡事皆有可是,在以前咱们用instanceof运算符来肯定对象的类型,当时咱们的代码是这样的

var abc=function(num){
  return num+1;
}
console.log(abc instanceof Object);    //一切皆对象
console.log(abc instanceof Function);    //Function类型的对象

咱们注意到,abc函数既是Object又是Function,那么咱们能够认为函数abc是Function类型的Object

同理,一个数组就是Array类型的Object

然而咱们以上建立的person_01是啥玩意?

没错他只是Object,假如咱们工做中须要建立不少个工厂模式,基于这些工厂方法又建立不少种不一样的对象,那么怎么区分这些对象是什么类型或者说是哪一个工厂方法建立的?

显然instanceof并不能告诉咱们答案

...

相关文章
相关标签/搜索