项目提成计算器——JavaScript原型链的使用

简介: 项目提成为只读模式,要求有3个角色可以选择,分别为程序员、项目经理、销售人员。效果图如下,要按照每个角色,点击“计算”按钮,可以进行计算。

📚题目要求

项目提成为只读模式,要求有3个角色可以选择,分别为程序员、项目经理、销售人员。效果图如下,要按照每个角色,点击“计算”按钮,可以进行计算。

image.gif

📚题目提供的代码如下

(本题的部分考点内容与20226月考试题目不一样)

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><(1)>        * {
        margin: 0;
        padding: 0;
        }
        header {
        text-align: center;
        margin-bottom: 15px;
        }
        #box {
        margin: 20px auto 0;
        width: 300px;
        text-align: center;
        }
        #bonus {
        height: 50px;
        width: 280px;
        background-color: #f3f3f3;
        }
        #benefit {
        height: 25px;
        width: 140px;
        }
        (2) {
        height: 22px;
        width: 130px;
        vertical-align: bottom;
        }
        #count {
        padding-top: 10px;
        padding-right: 11px;
        text-align: right;
        }
        #countBtn {
        height: 25px;
        width: 70px;
        text-align: center;
        background-color: #ffffff;
        cursor: pointer;
        }
        #benefit,
        #roles#countBtn,
        #bonus {
        border: 1px solid #d4d4d4;
        }
</(1)><(4)>        function roles() {
            // 程序员提成计算
            this.programmer = (5) {
                if ((6) > 10000) {
                    return data * 0.05;
                } else if (data >= 2000) {
                    return 50;
                } else {
                    return 0;
                }
            }
            // 项目经理提成计算
            this.manager = (5) {
                if ((6) > 20000) {
                    return data * 0.2;
                } else {
                    return data * 0.1;
                }
            }
            // 销售人员提成计算
            this.salesman = (5) {
                if ((6) > 100000) {
                    return data * 0.3;
                } else if (data >= 50000) {
                    return data * 0.2
                } else {
                    return data * 0.05;
                }
            }
        }
        // 提成对象
        function bonus() {
            // 项目收益
            this.benefit = 0;
        }
        bonus.(7).setBenefit = function (data) {
            // 设置项目收益
            this.benefit = data;
        }
        // 设置bonus的原型链roles
        bonus.(8) = new roles();
        bonus.(7).getBonus = function (role) {
            // 通过角色策略方法计算返回提成
            (9) role(this.benefit);
        }
        // 创建bonus的实例对象
        var bonusCount = (10) bonus();
        // 角色策略筛选
        var strategies = {
            "1": function () {
                // 程序员角色策略计算
                return bonusCount.(11)(bonus.programmer);
            },
            "2": function () {
                // 项目经理角色策略计算
                return bonusCount.(11)(bonus.manager);
            },
            "3": function () {
                // 销售人员角色策略计算
                return bonusCount.(11)(bonus.salesman);
            }
        }
        function countFun() {
            // 获取项目受益值
            var benefit = document.(13)("benefit").value;
            // 获取选择的角色值
            var roles = document.(13)("roles").value;
            // 设置项目收益
            bonusCount.(12)(benefit);
            //角色策略对应的提成计算值
            document.(13)("bonus").value = strategies[role]();
        }
</(4)></head><body><divid="box"><header>项目提成计算器</header><divid="dataBox"><inputtype="text"id="bonus"(14)="(14)"placeholder="项目提成"></div><inputtype="text"id="benefit"value="0"><selectname=""id="roles"><optionvalue="1">程序员</option><optionvalue="2">项目经理</option><optionvalue="3">销售人员</option></select><divid="count"><inputtype="button"id="countBtn"value="计算"(15)="countFun()"></div></div></body></html>

image.gif

📚完整代码如下

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>        * {
margin: 0;
padding: 0;
        }
header {
text-align: center;
margin-bottom: 15px;
        }
#box {
margin: 20pxauto0;
width: 300px;
text-align: center;
        }
#bonus {
height: 50px;
width: 280px;
background-color: #f3f3f3;
        }
#benefit {
height: 25px;
width: 140px;
        }
#roles {
height: 22px;
width: 130px;
vertical-align: bottom;
        }
#count {
padding-top: 10px;
padding-right: 11px;
text-align: right;
        }
#countBtn {
height: 25px;
width: 70px;
text-align: center;
background-color: #ffffff;
cursor: pointer;
        }
#benefit,
#roles#countBtn,
#bonus {
border: 1pxsolid#d4d4d4;
        }
</style><script>functionroles() {
// 程序员提成计算this.programmer=function(data) {
if (data>10000) {
returndata*0.05;
                } elseif (data>=2000) {
return50;
                } else {
return0;
                }
            }
// 项目经理提成计算this.manager=function(data) {
if (data>20000) {
returndata*0.2;
                } else {
returndata*0.1;
                }
            }
// 销售人员提成计算this.salesman=function(data) {
if (data>100000) {
returndata*0.3;
                } elseif (data>=50000) {
returndata*0.2                } else {
returndata*0.05;
                }
            }
        }
// 提成对象functionbonus() {
// 项目收益this.benefit=0;
        }
bonus.prototype.setBenefit=function (data) {
// 设置项目收益this.benefit=data;
        }
// 设置bonus的原型链rolesbonus.__proto__=newroles();
bonus.prototype.getBonus=function (role) {
// 通过角色策略方法计算返回提成returnrole(this.benefit);
        }
// 创建bonus的实例对象varbonusCount=newbonus();
// 角色策略筛选varstrategies= {
"1": function () {
// 程序员角色策略计算returnbonusCount.getBonus(bonus.programmer);
            },
"2": function () {
// 项目经理角色策略计算returnbonusCount.getBonus(bonus.manager);
            },
"3": function () {
// 销售人员角色策略计算returnbonusCount.getBonus(bonus.salesman);
            }
        }
functioncountFun() {
// 获取项目受益值varbenefit=document.getElementById("benefit").value;
// 获取选择的角色值varrole=document.getElementById("roles").value;
// 设置项目收益bonusCount.setBenefit(benefit);
//角色策略对应的提成计算值document.getElementById("bonus").value=strategies[role]();
        }
</script></head><body><divid="box"><header>项目提成计算器</header><divid="dataBox"><inputtype="text"id="bonus"readonly="readonly"placeholder="项目提成"></div><inputtype="text"id="benefit"value="0"><selectname=""id="roles"><optionvalue="1">程序员</option><optionvalue="2">项目经理</option><optionvalue="3">销售人员</option></select><divid="count"><inputtype="button"id="countBtn"value="计算"onclick="countFun()"></div></div></body></html>

image.gif

📚题目分析

①关于该试题整体难度为难,考核点其实还算常规考核点

②本题的考核主要是JavaScript,包括了表单的只读属性和点击事件,js定义函数,js获取元素等知识,这些属于较简单的题目。

③此题的项目提成计算器使用了原型和原型链,如果之前没了解过这个知识点,这题就难做了不过也可以写对10空以上的这题,这块知识点是JavaScript中相对难以理解的内容,在完成某一个功能时,一般使用的是面向过程的编程思想。

📚实现效果

image.gif

目录
相关文章
|
1月前
|
JavaScript 前端开发 开发者
理解JavaScript中的原型链:基础与实践
【10月更文挑战第8天】理解JavaScript中的原型链:基础与实践
|
9天前
|
JavaScript 前端开发
JavaScript 原型链的实现原理是什么?
JavaScript 原型链的实现原理是通过构造函数的`prototype`属性、对象的`__proto__`属性以及属性查找机制等相互配合,构建了一个从对象到`Object.prototype`的链式结构,实现了对象之间的继承、属性共享和动态扩展等功能,为 JavaScript 的面向对象编程提供了强大的支持。
|
8天前
|
JavaScript 前端开发
原型链在 JavaScript 中的作用是什么?
原型链是 JavaScript 中实现面向对象编程的重要机制之一,它为代码的组织、复用、扩展和多态性提供了强大的支持,使得 JavaScript 能够以简洁而灵活的方式构建复杂的应用程序。深入理解和熟练运用原型链,对于提升 JavaScript 编程能力和开发高质量的应用具有重要意义。
|
11天前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
20 2
|
10天前
|
JavaScript 前端开发
如何使用原型链继承实现 JavaScript 继承?
【10月更文挑战第22天】使用原型链继承可以实现JavaScript中的继承关系,但需要注意其共享性、查找效率以及参数传递等问题,根据具体的应用场景合理地选择和使用继承方式,以满足代码的复用性和可维护性要求。
|
24天前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
|
21天前
|
JavaScript 前端开发 开发者
探索JavaScript原型链:深入理解与实战应用
【10月更文挑战第21天】探索JavaScript原型链:深入理解与实战应用
26 1
|
2月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
27天前
|
JavaScript 前端开发 测试技术
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
28 1
|
28天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。