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}

浙公网安备 33010602011771号