首页 > 编程 > JavaScript > 正文

JavaScript原型

2019-11-14 08:45:58
字体:
来源:转载
供稿:网友

每一个javaScript对象(null除外)都和另一个对象相关联。“另一个对象”就是我们熟知的原型,每一个对象都从原型继承属性。

在ECMAScript5中,将对象作为参数传入Object.getPRototypeOf()中可以查询它的原型。

要检测一个对象是不是另一个对象的原型,可以通过isPrototypeOf()方法。例如可以通过p.isPrototypeOf(o)检测p是否是o的原型。

每一个函数都包含一个prototype属性,指向函数的原型对象。当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。例如:

//这是一个构造函数,用以初始化新创建的“范围对象”function Range(from, to){	this.from = from;	this.to = to;}//所有的“范围对象”都继承自这个对象//注意属性的名字是prototypeRange.prototype = {	//如果x在范围内,则返回true;否则返回false	includes: function(x){		return this.from <= x && x <= this.to;	},		//对于范围内的每一个整数都调用一次f	foreach: function(f){		for(var x = Math.ceil(this.from); x <= this.to; x++) f(x);	},		//表示返回这个范围的字符串	toString: function(){		return "(" + this.from + "..." + this.to + ")";	}};var r = new Range(1, 3);   //创建一个范围对象r.includes(2);             //truer.foreach(console.log);    //输出 1 2 3console.log(r.toString()); //输出 (1...3)原型对象是类的唯一标识:当且仅当两个对象继承自同一个原型对象时,它们才是属于同一个类的实例。而初始化对象的状态的构造函数则不能作为类的标识。两个构造函数的prototype属性可能指向同一个原型对象,那么这两个构造函数创建的实例是属于同一个类的。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表