js prototype(笔记)

原创 前端小小白 随笔 笔记 152阅读 2018-05-23 12:35:12 举报

function Person(name,age){//创建一个构造函数
this.name=name;
this.age=age;
this.love=function(){
return "running";
}
};

//创建构造函数的原型 Person.prototype
Person.prototype.name="王五";
Person.prototype.age=23;
Person.prototype.getName=function(){
return this.name;
}
Person.prototype.hobby=function(){
return "watching";
}

//创建构造函数的实例
var p1=new Person(“张三” “21”);//创建构造函数的实例p1(对象实例)
var p2=new Person(“李四” “22”);//创建构造函数的实例p2(对象实例)
var p3=new Person();//创建构造函数的实例p3(对象实例)

//原型对象最大特点是,所有对象实例共享它所包含的属性和方法
//搜索属性或方法:先查找实例本身,有就返回该属性或方法,没有则去原型上去找
alert(p1.name);//"张三";
alert(p2.name);//"李四";
alert(p3.name);//“王五”
alert(p1.getName);////"张三";
alert(p2.getName);//"李四";
alert(p3.getName);//“王五”
//所有的实例对象都可以继承构造函数中的属性和方法。但是,同一个对象实例之间,无法共享属性或方法。
console.log(p1.love===p2.love); //false
//prototype属性解决构造函数的对象实例之间无法共享属性的缺点,原型对象上的所有属性和方法,都会被对象实例所共享。
console.log(p1.hobby===p2.hobby); //true
//继承
function Men(){}//创建构造函数Men
Men.prototype=new Person();//Men的原型为Person的实例。则Men的原型继承Person原型上的方法和属性

var m1=new Men();
alert(m1.name);//"王五";

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复