浅谈JavaScript中的原型与对象

JavaScript是一门面向对象的程序设计语言,但是和java具有不同的继承机制,JavaScript的继承是通过继承原型来创建新的对象,而java中的继承则是直接继承其父类获取父类的属性。下面通过一点代码,体验JavaScript中的继承机制

function Person(name,age){
		this.name=name;
		this.age=age;
	}


	Person.prototype={
		hi:function(){
		console.log("hi,my name is "+this.name+" i am "+this.age+"years old now");
	},
	LEGS_NUM:2,
	ARMS_NUM:2,
	walk:function(){
		console.log(this.name+" is walking");
	}
}


	function Student(name,age,classname){
		Person.call(this,name,age);
		//this指向新创建的bson
		this.className=classname;
	}


	Student.prototype=Object.create(Person.prototype);
	//创建一个空白的原型,原型指向person.prototype,方法可以继承person

	var bson=new Student("bson",12,"信管");

	console.log(bson);

	bson.walk();
	bson.ARMS_NUM;

其中Person()是一个构成方法,我们默认方法名为大写字母开头的方法名为构造方法,person这个类有两个属性,一个是age和name,其中Person有一个非常重要的属性就是prototype,这个属性是一个对象,这个对象可以作为创建对象时候的原型。
我们可以往这个原型中,增加属性,这些属性是共享的,只要对象的原型指向该原型,都可以使用这个原型里面的属性。指向原型,指的是,通过该该原型来创建新的对象,或者是构成一个新的原型,而这个原型也是通过Object.create(Person.prototype)方法构建的,所以它的也是指向Person.prototype这个原型。

正确来说,Person.prototype与原型是两回事,因为Person.prototype是Person类的一个属性,原型是一个对象,是用花括号包起来的一块东西,这块东西指向了person.prototype,所以我们在使用继承的时候,继承的是原型这个对象,而不是person.prototype.

之后,我们新建一个对象,bson,bson的属性很多都继承了person.prototype,而name和age并没与修改person类,实现相互独立的功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值