gpt4 book ai didi

javascript - 使用 .prototype 的简单场景

转载 作者:行者123 更新时间:2023-11-29 10:24:23 24 4
gpt4 key购买 nike

2 个问题:

  1. 下面,将Code A和代码 B 有结果一样吗?
阅读@Box9 的回答后

添加:代码 A 与代码 C 相比如何?

  1. 什么是简单、实用、代码 A 的直观编码场景首选技术?

代码A:使用.prototype

function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;
}

employee.prototype.salary=null;

代码 B:没有 .prototype

function employee(name,jobtitle,born)
{
this.name=name;
this.jobtitle=jobtitle;
this.born=born;

employee.salary=null;
}

代码 C:带有 .prototype ,里面什么都没有

    function employee(){}

employee.prototype.name=null;
employee.prototype.jobtitle=null;
employee.prototype.born=null;
employee.prototype.salary=null;

提前致歉,我意识到在 .prototype 和许多网络教程上还有其他 SO 问题,但是这些解释似乎过于简单化或者只是技术上的问题。

最佳答案

在您的示例中,代码 A 正确,而代码 B 不正确。

为了解释,我们可以从三个不同的方面来思考employee:

  1. “标准”员工 - 所有新员工共有的默认值(value)观集。这是我们创造新员工的模型。例如。新员工的薪水从零开始。
    • 这是原型(prototype)
  2. “特定”员工 - 比如,约翰。他最初的薪水为零(来自“标准”员工),但以后可以分配给他自己的薪水。他还有自己的姓名、职务和生日,这些都是他独有的。
    • employee() 函数中使用关键字 this 分配唯一属性。
  3. 员工作为一个群体 - 不是为每个员工存储的总值,而是一次为所有员工存储的值,例如所有员工都来自A公司。
    • 这是直接在函数 employee 上设置属性。

现在回到你的两个代码示例,

代码 A 中的

employee.prototype.salary = null 是正确的,因为它设置了“标准”员工的起薪。

代码 B 中的

employee.salary = null 是不正确的,因为它将所有员工的薪水设置为一个组 - 也就是说,它不仅仅是一个默认值,而是一个单个,所有员工的综合值(value)。这段代码在 employee() 函数中并不重要 - 该函数的唯一区别是它允许您使用 this 关键字来引用由于调用 new employee() 而当前正在构建的“特定”员工。

关于javascript - 使用 .prototype 的简单场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4760658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com