JavaScript 实现(4).add(2).minus(1)功能

这篇博客介绍了如何使用JavaScript扩展运算符自定义Number对象的方法,如加、减、乘、除,使得可以方便地进行链式计算。通过为Number原型添加add、minus、mul和div方法,实现了类似4.add(2).minus(1)这样的表达式,提高了代码的可读性和趣味性。示例中展示了如何进行复杂数值计算,并提供了验证示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现效果

// 4+2-1=5
console.log((4).add(2).minus(1)); // 5

实现过程

使用Number对象的prototype属性,为对象添加方法即可。

Number.prototype.add = function(n) {
    // this为 Number {4} 实例对象
    // this.valueOf()为Number {4}的基本数字值4
    return this.valueOf() + n;
};
Number.prototype.minus = function(n) {
    return this.valueOf() - n;
};

// 同样,也可以添加乘、除的方法
Number.prototype.mul = function(n) {
    return this.valueOf() * n;
};

Number.prototype.div = function(n) {
    return this.valueOf() / n;
};

验证

// (4+2-1)×6÷10=3
console.log((4).add(2).minus(1).mul(6).div(10)); // 3

// (2×9+6)÷4-5=1
console.log((2).mul(9).add(6).div(4).minus(5)); // 1

完成!

// 1. 优化点位(Entity)配置,强制置顶 var point = window.viewer.entities.add({ name: data.ghName ? data.ghName : data.type == 0 && data.numData == 1 ? '顶点' : '点', position: data.position3, description: { position: data.position }, label: { // ... 其他配置不变 ... // 关键:禁用深度测试,确保标签不被任何物体遮挡 disableDepthTestDistance: Number.POSITIVE_INFINITY }, billboard: { // ... 其他配置不变 ... // 关键:禁用深度测试,确保图标不被任何物体遮挡 disableDepthTestDistance: Number.POSITIVE_INFINITY, // 额外添加:提升渲染优先级(Entity 内部生效) zIndex: 100 // 确保在其他 Entity 之上 } }); // 2. 优化圆形(Primitive)配置,确保不遮挡 Entity var primitives = new Cesium.Primitive({ geometryInstances: instance, appearance: new Cesium.MaterialAppearance({ material: new Cesium.Material({ fabric: { type: "Color", uniforms: { color: Cesium.Color.fromCssColorString("#2963C3").withAlpha(0.1) } } }), translucent: true, renderState: { depthTest: { enabled: false }, depthMask: false, // 关键:配置混合模式,让圆形正确与下层融合 blending: { enabled: true, equationRgb: Cesium.BlendingEquation.ADD, equationAlpha: Cesium.BlendingEquation.ADD, functionSourceRgb: Cesium.BlendingFunction.SOURCE_ALPHA, functionSourceAlpha: Cesium.BlendingFunction.SOURCE_ALPHA, functionDestinationRgb: Cesium.BlendingFunction.ONE_MINUS_SOURCE_ALPHA, functionDestinationAlpha: Cesium.BlendingFunction.ONE_MINUS_SOURCE_ALPHA } } }), show: true, allowPicking: false, zIndex: 1 }); // 3. 优化轮廓线(Primitive)配置 var primitivesLine = new Cesium.Primitive({ geometryInstances: polylineInstance, appearance: new Cesium.PolylineMaterialAppearance({ material: Cesium.Material.fromType("Color", { color: Cesium.Color.fromCssColorString("#2963C3").withAlpha(1) }), translucent: true, renderState: { depthTest: { enabled: false }, depthMask: false, // 同样添加混合模式 blending: { enabled: true, equationRgb: Cesium.BlendingEquation.ADD, equationAlpha: Cesium.BlendingEquation.ADD, functionSourceRgb: Cesium.BlendingFunction.SOURCE_ALPHA, functionSourceAlpha: Cesium.BlendingFunction.SOURCE_ALPHA, functionDestinationRgb: Cesium.BlendingFunction.ONE_MINUS_SOURCE_ALPHA, functionDestinationAlpha: Cesium.BlendingFunction.ONE_MINUS_SOURCE_ALPHA } } }), asynchronous: false, show: true, allowPicking: false, zIndex: 1 }); // 4. 确保圆形在点位之后添加到场景 // 先添加点位(Entity 会立即处理) routeArr.push(point); // 后添加圆形(Primitive 后添加,避免覆盖已添加的 Entity) this.circleEntity = window.viewer.scene.primitives.add(primitives); this.circleEntityOutline = window.viewer.scene.primitives.add(primitivesLine); 怎么确保的创建的点位在圆的上面呢
最新发布
08-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值