JS原型属性解释及常用方法

功能:原型

每个构造函数都有一个称为原型的属性(原型,它不再使用原来的文本翻译)。这个属性非常有用:声明一个特定类的一般变量或函数。

原型的定义

您不必显式声明一个原型属性,因为它存在于每个构造函数中:

例1

复制代码代码如下所示:
功能测试()
{
}
警报(测试原型);输出对象


将属性添加到原型中

正如您在上面看到的,原型是一个对象,所以您可以向它添加属性,您添加到原型中的属性将成为使用此构造函数创建的对象的共同属性。

例如,我在下面有一个数据类型的鱼。我想所有的鱼都有这些属性:生活=水和价格= 20;为了实现这一点,我可以添加这些属性的构造函数原型的鱼。

例PT2

复制代码代码如下所示:
功能鱼(名称、颜色)
{
这个名字=名字;
这个颜色=颜色;
}
鱼。原型。生活=水;
鱼。原型。价格=20;


那么我们来做点鱼吧:

复制代码代码如下所示:
var Fish1 =新的鱼(mackarel
var =新的鱼鱼(金鱼
无功fish3 =新鱼(三文鱼


看看鱼有什么属性:

复制代码代码如下所示:
对于(int = i 1;i < = 3;i + +)
{
VaR的鱼= eval_r(鱼+我); / /我只是一个指针的鱼
警告(鱼名+
}


输出应该是:

复制代码代码如下所示:
mackarel、灰、水、20
金鱼,桔子,水,20
鲑鱼,白水,20


你看,所有的鱼都在和价格属性,我们甚至不声明这些属性对于每一个不同的鱼。这是因为当一个对象被创建,构造函数将转让其财产,原型,对新对象的内部属性__proto__。这__proto__是用这个对象找到它的性质。

你也可以通过原型的所有对象添加一个共同的功能。这有一个好处:你不需要创建和初始化这个函数每次生成一个对象。在此,让我们重温例DT9和使用原型重写:

用原型向一个对象添加一个函数

例PT3

复制代码代码如下所示:
职能员工(姓名、薪金)
{
这个名字=名字;
薪水=薪水;
}
员工。原型。getsalary =功能getsalaryfunction()
{
返回this.salary;
}

员工。原型。addsalary =功能addsalaryfunction(加法)
{
工资=这个;
}


我们可以像往常一样创建对象:

复制代码代码如下所示:
无功boss1 =新员工(琼
VaR BOSS2 =新员工(基姆
无功boss3 =新员工(山姆


并验证它:

复制代码代码如下所示:
警报((boss1。getsalary)); / /输出200000
警报((BOSS2。getsalary)); / /输出100000
警报((boss3。getsalary)); / /输出150000


这里是一个图展示原型的作品。这个对象的每个实例(boss1,BOSS2,boss3)有一个内部属性称为__proto__,指其构造函数属性原型(员工)。当你执行getsalary或addsalary,对象会找到并执行它的代码__proto__。注:有没有复制的代码在这里(比例dt8图表)。