JS高级类,简单继承

原型模式(prototype):

1 原型是一个对象,其他对象可以通过它实现属性继承,所有的对象默认情况下都有原型。原型本身也是对象,所以,一个类的真正原型是被类的内部的【Prototype】属性指出。

2 在js中一个对象就是任何的无序的键值对的集合。

  如果他不是主数据类型(number,undefined,null,string,boolean)其他的通通叫对象。

3 js中的原型(prototype)是和function紧密连接的。

每一个通过new生成的对象或简易方法生产的对象(var a={ })都有一个属性__proto__,这个属性保存了创建它的构造函数的原型的引用。

用函数生成的对象通过prototype访问原型。

eg:

function person(){}//定义一个空对象
person.prototype.name="Anna";
person.prototype.showName=function(){
//这个this代表调用本函数的具体的实例化的类
alert(this.name);
}
new person().showName();
eg2:

var cat={}//定义一个空对象
cat.protoptye.name="kitty";
//报错: Cannot set property 'name' of undefined
//用简单方式sheng成的对象不能通过prototype访问原型

//默认调用下面的方式

//得到原型链的引用
Object.getPrototypeOf(cat).name="kitty";//方式一
cat.__proto__.master="Jack;"
//常用写法
cat.age=2;
cat["sex"]="name";
alert(cat.name+" "+cat.age+" "+cat["sex"]+" "+cat.master);
//结果:kitty 2 name Jack;

利用原型链实现简单继承

function per(){
this.getName=function(str){
alert(str);
  }
}
per.prototype.getAge=function(age){
alert(age);
}

var a={};
a.__proto__=per.prototype;
a.getAge(1);
//结果:1


注意:a 与per并无关系

function per(){
this.getName=function(str){
alert(str);
  }
}
per.prototype.getAge=function(age){
alert(age);
}

var a={};
a.__proto__=new per();
//改变constructor
a.__proto__.constructor=a;
a.getName("Jack");
a.getAge(1);

原型链继承

function m(){
	this.showM=function(){
	alert("my name is m");
	}
}
function n(){
	this.showN=function(){
	alert("my name is n");
	}
}
n.prototype=new m();
n.prototype.constructor=n;
function a(){};
a.prototype=new n();
a.prototype.constructor=a;
var test=new a();
test.showM();
test.showN();





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值