Javascript原型与构造函数简介

1。构造函数
构造函数的值是一个函数。在Javascript中,除了null和未定义之外,还有一个值、数组、函数和对象的构造函数属性。构造函数属性的值是这个值、数组、函数或对象的构造函数:
复制代码如下:var a = 12,数字
B = 'str / /字符串
c = false /布尔值
d = 1,,函数(返回)},5; /数组
E = {姓名:e }, / /对象
F =函数(返回){ 'function}; / /功能;

console.log(A:,a.constructor); / /(数)
Console.log ('b:, b.constructor); / / (String)
console.log(C:,c.constructor); / /(布尔)
console.log(会:,d.constructor); / /(阵列)
console.log(E:,e.constructor); / /(对象)
console.log(F:,f.constructor); / /(功能)


所有的构造函数都是用Javascript构建的,我们也可以自定义构造函数,比如:
复制代码代码如下所示:
函数A(名称){
this.name =名称;
}

创建一个新的(A);

console.log(a.constructor); / /(姓名)


当构造函数被调用时,您需要使用新关键字,构造函数返回一个对象。请看下面的代码。
复制代码如下:var a = 4;
var =新的数字(4);

console.log(':',种类); / /:数
console.log(b:',类B); / / B:对象


二,原型
原型是函数的一个属性。默认情况下,函数的原型属性是与函数名称相同的null对象。匿名函数的原型属性称为对象,例如:
复制代码如下:函数(FN){ }

console.log(FN。原型); / / {fn }


原型属性主要用于在Javascript中实现继承,如:
复制代码代码如下:函数A(名称){
this.name =名称;
}

a.prototype.show =函数(){
console.log(这个名字);
};

函数B(名称){
this.name =名称;
}

b.prototype = a.prototype;

VaR测试=新的B(测试);

(测试显示);


这是一个问题,测试的构造函数实际上是一个函数而不是B函数:
复制代码如下:console.log(测试。构造函数); / /(姓名)

这是因为b.prototype = a.prototype改变b.prototype一个构造函数,所以你需要恢复B.prototype的构造函数:
复制代码代码如下:函数A(名称){
this.name =名称;
}

a.prototype.show =函数(){
console.log(这个名字);
};

函数B(名称){
this.name =名称;
}

b.prototype = a.prototype;
b.prototype.constructor = B;

VaR测试=新的B(测试);

(测试显示);
console.log(测试。构造函数); / / B(名字)


这样做的原因是原型的值是一个对象,它的构造函数是构造函数属性的函数,也就是它的函数。
复制代码如下:console.log(a.prototype.constructor =一个); / /真的