首页 > 代码库 > js中的原型
js中的原型
一、在js中的构造函数与原型
js中没有类的概念,只是把一个对象实例化,这个对象一般会成为原型对象。js中所以的函数都有一个prototype属性,这个属性引用了一个对象, 即原型对象,也简称原型。这个函数包括构造函数和普通函数。
function A(X) { this.x=x; } var obj = new A(1); alert( A.x)// 1
这其中最重要的是要有this 这个属性,实例化以后才能直接用。new 以后this 指向的是新对象。
实例化 object 对象有三步:
1、创建obj对象:obj= new Object();
2、将obj 的内部_proto_指向构造他的函数A的prototype。实例化的对象内部没有prototype,他是通过_proto_来取得原型链上的原型属性与原型方法。
obj.constructor === A.prototype.constructor ,类的实例对象的constructor属性永远指向"构造函数"的prototype.constructor),从而使得obj.constructor.prototype指向A.prototype
3. 将obj作为this去调用构造函数A,从而设置成员(即对象属性和对象方法)并初始化。
var num=0; for(o in A.prototype) { alert(o);//alert出原型属性名字 num++; } alert("member: " + num);//alert出原型所有成员个数。
二、原型与继承
原型继承:
function A(x){ this.x = x; } A.prototype.a = "a"; function B(x,y){ this.y = y; A.call(this,x); } B.prototype.b1 = function(){ alert("b1"); } B.prototype = new A(); B.prototype.b2 = function(){ alert("b2"); } B.prototype.constructor = B; var obj = new B(1,3);
function A (X) { this.x=x; } A.prototype.a =‘a‘; 现在 function A (X) { this.x=x; this.a ="a"; } function B (x,y){ this.y=y; A.call(this,x); } 现在 function B (x,y){ this.x=x; this.y=y; } B.prototye.b1=funcrion(){ alert (‘b1‘); } 现在 function B (x,y){ this.x=x; this.y=y; this.b1= funcrion(){ alert (‘b1‘); } B.prototype = new A(); 现在 B.prototype { this.x=x; this.a ="a"; } B.prototype.b2 = function(){ alert("b2"); } 现在: B.prototype { this.x=x; this.a ="a"; this.b2 = function(){ alert("b2"); } } B.prototype.constructor = B; var obj = new B(1,3);
输出: function B(1,3){
this.y = y;
A.call(this,x);
}
obj :{x:1;y:3}
js中的原型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。