我们看图来了解构造函数,原型对象,对象实例之间的关系:
1.构造函数有prototype属性指向原型对象
2.原型对象有个constructor属性指回构造函数
3.每个对象实例有个_proto_属性(浏览器支持的)指向原型对象
- isPrototypeOf() 来检测对象的原型和原型对象是否有关系
- Object.getPrototypeOf() 获取对象实例的原型对象(ES5新增的方法)。兼容性:IE9+
- hasOwnProperty(),用来确定访问的属性在不在对象实例本身
- hasPrototypePorperty(),用来确定访问的属性在不在原型对象中
- in操作符 作用:直接问对象中有没有某某属性,无论在对象实例本事还是在原型对象中,只要有就返回true,否则false
- for-in 作用:用来遍历某个对象的所有属性
- Object.keys() 作用:取得对象所有可枚举的属性。接受一个对象作为参数,返回对象属性的数组。(ES5的方法)
1.构造模式用于定义实例属性。
2.原型模式用来定义方法和共享的属性。
function Person(name , age , sex){
//这里定义实例的属性
this.name = name ;
this.age = age ;
this.sex = sex;}
//下面定义共享的属性和方法
Person.prototype = {
constructor : Person ,
sayHi : function (){
console.log("hi"); }}
//创建你的对象吧
var girl = new Person("玲玲",18,"female");
var boy = new Person ("元元",20,"male");
//各自的名字console.log(girl.name); //"玲玲"
console.log(boy.name); //"元元"
//打招呼girl.sayHi(); //hi
boy.sayHi(); //hi