JS 对象

function createPerson(name,age,job){
  var o=new Object();
  o.name=name;
  o.age=age;
  o.job=job;
  return o;
}
var p1=createPerson('name',11,'pair');
p1 instanceof createPerson    //返回false
//事实上instanceof 是通过对比该对象的constructor 是否是右边  但是工厂模式创建出来的对象constructor都是object
p1.constructor// 得到function Object() { [native code] }

//构造函数模式
function Person(name,age,job){
  this.name=name;
  this.age=age;
  this.job=job;
  this.introduce=function(){
    alert("My name is "+this.name+", I am"+age+"year(s) old, I am a "+job+".");
  }
}

var p2=new Person('name',11,'emp');
//首先需要知道new的事后都发生了什么  
//new 会返回一个对象  且该对象的_proto_指向Person的Prototype  而Person的原型的constructor就是Person
//所以p2的constructor属性 (等下 p2实例并没有constructor属性啊)  但是它所属类的Person的原型有  于是属性查找到了Person的原型
//显然我们知道类的原型有constructor属性  这个属性指向类(函数)本身
p2.constructor //得到function Person(name,age,job){}
p2 instanceof Person // true



//原型模式
function Pers(){

}

Pers.prototype.name='nico';
Pers.prototype.age=20;
var p3=new Pers();
p3.constructor //function Pers(){}
p3 instanceof Pers //true

参考  http://www.zhihu.com/question/21220141

posted @ 2014-06-03 16:08  cart55free99  阅读(162)  评论(0编辑  收藏  举报