prototype属性简介

prototype为对象原型的意思,在JS中配置对象的prototype属性,可以减少js内存空间的占用,提高js的性能。
使用示例:

function Animal(name){
	this.name=name;
}
Animal.prototype.style=['毛色','几条腿'];
Animal.prototype.age=1;
Animal.prototype.show=function(){
	console.log("我是:"+this.name+",今年"+this.age+"岁,我有以下特点:");   //引用时,无论是否为原型变量,
	for(var index in this.style){                                          //都要为this.property
		console.log(this.style[index]);
	}
}
//创建实例
var dog=new Animal('狗');
var cat=new Animal('猫');
dog.show();
cat.show();
备注:
1、若设置 cat.age=3; 则只有猫这个实例的年龄为3。与其相似的还有对原型方法的重写,只有猫实例生效。
2、若设置 Animal.prototype.age=3; 则所有动物实例的年龄为3。与其相似的还有对原型方法的重写,所有动物实例都生效。
3、若设置 cat.style.push('吃饭'); 则所有动物的arr都会进行改变。(注意)
4、若想添加新的原型属性或方法,任意位置直接添加即可,但要注意其会对其它实例产生影响。

Object.prototype.property相较于Object.property的优点为:前者声明的属性或方法只创建一次,不会像后者随着每次实例的创建而创建,从而节省了大量js内存,提升了js的性能。


如果不想使用Object.prototype.property,也可以使用外部方法来实现Object.prototype.property的功能,如下所示:

function ma(name,age){
	this.name=name;
	this.age=age;
	this.show=method;
}
function method(){
	console.log("我的名字是:"+this.name+",我的年龄是:"+this.age);
}
实现的功能一样,但是不利于重写和维护。


备注:可以使用 object.hasOwnProperty(property); 来判断已知属性为该实例的私有属性还是原型属性。
所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

eg. 
dog.food='骨头';
dog.hasOwnProperty('name');     //true
dog.hasOwnProperty('food');     //true
dog.hasOwnProperty('age');      //false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值