var p1={ //对象中属性的写法
name:"zs",
age:20,//方法
//
say:function(){
console.log("哈哈");
}
}
//构造函数
function Person(name,age){//类中属性的写法
this.name=name,
this.age=age;
this.say=function(){//每次new出来的人都会new出来一个函数,就会十分占用空间内存,
console.log("hhhsss");
}
}
var p1=new Person("zs",20);
console.log(p1);
var p2=new Person("wangnzhen",30);
//原型 prototype
/*函数有一个prototype属性,这个属性是一个指学针 指向他的原型对象 指向原型对象
原型对象下的属性和方法 可以被实例化对象所共享
原型对象下有一个construct 属性指向他的构造函数
__proto__是实例对象下的属性指向构造函数的原型
原型链 :
当从一个对象那里调取属性或方法时,如果该对象自身不存在这样的属性或方法,
就会去自己关联的prototype对象那里寻找,如果protot没有,就会去prototype关联的前辈protot那里寻找,
如果没有则继续查询prototype.protot引用的对象,以此类推,
直到prototype.....protot为undefined(object的prototype就是undefined)
从而形成了所谓的“原型链”
*/
Person.prototype.sex="女";
Person.prototype.say2=function(){
console.log(this.name+"safsadfasdfasd000");
}
console.log(p1.sex);