您的位置:首页 > Web前端 > JavaScript

JavaScript之prototype

2015-09-07 22:29 471 查看
在JavaScript中,有一些对象的属性或者方法是共有的,也就是说每个对象都拥有相同的某个属性或方法并且是不变的,那么如果把这个属性或方法放在对象函数中,就会极大的浪费内存空间,这是因为每当你创建一个对象这个方法或属性都会每创建一次,所以我们很自然的就会想到将这个属性或方法放在一个特定的代码段上。当属性或者方法被放在代码段上时,那么这个属性或方法只会被创建一次,并且它的生命周期从被创建一直到浏览器被关闭。而要完成这些就要用到一个原型方法下面我们来看一些代码:

<Script>
	function car(name, speed, price) {
  		this.name = name;
  		this.speed = speed;
  		this.price = price;
  		this.match = function() {
  			alert("全球最快没有之一");
  		};
  	}
	//这个方法就是被放在代码段上的方法
	car.prototype.play = function() {
			alert("下场比赛对决兰博基尼");
		};
	var car1 = new car("柯塞尼格","500km/h","$2010200000");
  	alert(car1.name);
  	car1.match();
	delete car1.play;
	car1.play();
</Script>
运行结果是:







下面我们来看一下在代码段上的方法的生命周期。

<Script>
	function car(name, speed, price) {
  		this.name = name;
  		this.speed = speed;
  		this.price = price;
  		this.match = function() {
  			alert("全球最快没有之一");
  		};
  	}
	car.prototype.play = function() {
			alert("下场比赛对决兰博基尼");
		};
	var car1 = new car("柯塞尼格","500km/h","$2010200000");
	//删除name这个属性
	delete car1.name;
  	alert(car1.name);
  	car1.match();
	//尝试删除play这个方法
	delete car1.play;
	car1.play();
</Script>
运行结果:







从第一个结果我们可以卡到在我们删除name这个属性后,当想再次打印name的值时,浏览器给我们的反应是name这个属性未定义。这是因为我们删除了这个属性。但是在我们尝试删除play()这个方法并且打印结果时会发现play()这个方法并没有被删除。这足以证明原型方法的生命周期是从被创建一直到浏览器被关闭。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: