Quinn

把所有的时间为你们服务,请叫我雷锋。。。

笔记

js中继承的几种用法总结(apply,call,prototype)

已有 909 次阅读2016-03-06 18:32 |系统分类: Prototype |

js中继承的几种用法总结(apply,call,prototype)

1.js原型(prototype)实现继承

function Person(name,age){
		this.name=name;
		this.age=age;
	}
	Person.prototype.sayHello=function(){
		alert("使用原型得到name:"+this.name);
	}
	var per=new Person("sm",21);
	per.sayHello();//输出:使用原型得到name:sm

	function Student(){}
	Student.prototype=new Person(“zs”,22);
	var stu=new Student();
	Student.prototype.grade=5;
	Student.prototype.intr=function(){
		alert(this.grade);
	}
	stu.sayHello();//输出:使用原型得到name:zs
	stu.intr();//输出:5

2.构造函数实现继承

function Parent(name){
		this.name=name;
		this.sayParent=function(){
			alert("Parent:"+this.name);
		}
	}
	function Child(name,age){
		this.tempMethod=Parent;
		this.tempMethod(name);
		this.age=age;
		this.sayChild=function(){
			alert("Child:"+this.name+"age:"+this.age);
		}
	}
	var parent=new Parent("sm");
	parent.sayParent();//输出:" Parent:sm"
	var child=new Child("zs",22);
	child.sayChild();//输出:" Child:zs age:22"

3.call apply实现继承

function Person(name,age,sex){
		this.name=name;
		this.age=age;
		this.sex=sex;
		this.say=function(){
			alert("姓名:"+name);
		}
	}
	//call方式
	function student(name,age){
		Person.call(this,name,age);
	}
	//apply方式
	function teacher(name,sex){
		Person.apply(this,[name,love]);
		//Person.apply(this,arguments);
	}
	//call与aplly的异同:  
	//1,第一个参数this都一样,指当前对象 
	//2,第二个参数不一样:call的是一个个的参数列表;apply的是一个数组(arguments也可以)
	var per=new Person(“sm”,21,”women”);
	per.say();//输出:sm
	var stu=new student(“zs”,22);
	stu.say();	//输出:zs
	var tea=new teacher(“smzs”,”men”);
	tea.say();	//输出:smzs


标签: js继承 apply call prototype 举报

收藏 2人收藏
给个赞2人点赞

笔记作者:Quinn

笔记链接:

原创声明:此笔记被 Quinn 标注为原创笔记,未经作者同意转载必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

评论
0 /300