Javascript构造函数和构造函数属性细节的精炼

除了创建对象的构造函数(构造函数)做了另一个有用的东西--自动设置原型对象(原型对象)为新创建的对象的原型对象存储在constructorfunction.prototype财产。

例如,我们重写前面的示例中,使用构造函数来创建对象B和C,那么对象扮演Foo.prototype:


构造函数
函数富(y){
将在特定模式中创建构造函数以创建对象:所创建的对象将具有y属性
这个,y = y;
}
原型存储对象引用原型
因此,我们可以用来定义继承和共享属性或方法。
所以,我们有以下代码:
继承属性x
原型;
计算继承方法
foo.prototype.calculate =函数(z){
返回这个;
};
使用富模式创建B和C
var =新富();
新的富();
方法调用继承
(b.calculate); / /
(c.calculate); / /
让我们看看期望的属性。
Console.log(
b.__proto__ = foo.prototype /真的
c.__proto__ = foo.prototype /真的
自动创建了一个特殊的属性构造函数
对构造函数本身
可以授权B和C的情况下查找它并检测它自己的构造函数。
b.constructor = foo /真的
c.constructor = foo /真的
foo.prototype.constructor = foo /真的
b.calculate = b.__proto__计算 /真实。
b.__proto__计算= foo.prototype.calculate /真实。
);


上面的代码可以用以下方式表达:


构造函数和对象之间的关系

可以看到图标,每个对象都有一个原型。构造函数foo也有自己的__proto__,即Function.prototype、Object.prototype和__proto__ function.prototype。再次,Foo.prototype是一个明确的属性,这是B和C __proto__财产

对这个问题的全面详尽的解释分为两部分:

面向对象程序设计。面向对象的程序设计。一般的理论描述了不同的面向对象的范式和风格(OOP范式和风格),并与ECMAscript。



面向对象(OOP programming.ecmascript实施。ECMAscript实现),专门从事面向对象程序设计中的ECMAscript。

现在我们已经了解的基本对象的原则,让我们在{运行ECMAscript执行环境看,程序执行},这就是通常所说的执行上下文堆栈{执行上下文堆栈}。每个元素都可以抽象地理解为对象,你会发现它,是的,在ECMAscript,你可以看到图中的对象几乎无处不在。

下面是Javascript构造函数属性的详细说明

对象的构造函数属性用于返回创建对象的函数,也就是我们常说的构造函数。

在Javascript中,每个对象的原型自动获取构造函数属性。除了一些特殊的对象作为参数,枚举错误,全球,数学,regexp,正则表达式,所有其他Javascript内置对象有构造函数的属性。例如,数组、布尔值、日期、数量、功能、对象、字符串等在所有的主流浏览器都支持此属性。

语法

object.constructor

返回值

对象的构造函数属性返回一个对函数的引用来创建对象。

实例的描述

下面代码中的{本地代码}表示这是Javascript的底层内部代码实现,它不能显示代码细节。


(字符串)
张;
document.writeln(str.constructor); / /函数的字符串({本地){代码} }
document.writeln(str.constructor =字符串); / /真的
(数组):数组
var arr = { 1, 2, 3 };
document.writeln(arr.constructor); / /功能阵列({本地} }){代码
document.writeln(arr.constructor = array); / /真的
/ /号码:号码()
var = 5;
document.writeln(num.constructor); / /功能号({本地} }){代码
document.writeln(num.constructor =数); / /真的
自定义对象:人()
功能人(){
this.name =codeplayer ;
}
新的人();
document.writeln(p.constructor); / /功能(人){ this.name =codeplayer ;}
document.writeln(p.constructor =人); / /真的
对象:(对象)
三};
Document.writeln (o.constructor); / / function Object ({native) {code}}
document.writeln(o.constructor =对象); / /真的
自定义/函数:函数()
函数(){
警报(codeplayer );
}
document.writeln(foo。构造函数); / /功能({ } } {本地代码)
document.writeln(foo.constructor =功能); / /真的
函数原型:bar()
函数条(){
警报(codeplayer );
}
document.writeln(酒吧。原型。构造函数); / /功能(酒吧){ alert(codeplayer );}
document.writeln(bar.prototype.constructor =酒吧); / /真的