表示2D笛卡儿坐标点的对象
这个对象用普通数据属性保存点的x和y坐标,用访问器属性给出与这个点等价的极坐标:
let p = {
// x和y是常规的可读写数据属性
x: 1.0,
y: 1.0,
// r是由获取方法和设置方法定义的可读写访问器属性
// 不要忘了访问器方法后面的逗号。
get r() { return Math.hypot(this.x, this.y); },
set r(newvalue) {
let oldvalue = Math.hypot(this.x, this.y);
let ratio = newvalue/oldvalue;
this.x *= ratio;
this.y *= ratio;
},
// theta是一个只定义了获取方法的只读访问器属性
get theta() { return Math.atan2(this.y, this.x); }
};
p.r // => Math.SQRT2
p.theta // => Math.PI / 4
注意这个示例的获取和设置方法中使用了关键字this。JavaScript会将这些函数作为定义它们的对象的方法来调用。这意味着这些函数体内,this引用的是表示坐标点的对象p。因此访问器属性r的获取方法可以通过this.x和this.y来引用坐标点的x和y属性。
与数据属性一样,访问器属性也是可以继承的。因此,可以把上面定义的对象p作为其他点的原型。可以给新对象定义自己的x和y属性,而它们将继承r和theta属性:
let q = Object.create(p); // 一个继承获取和设置方法的新对象
q.x = 3; q.y = 4; // 创建q的自有数据属性
q.r // => 5: 可以使用继承的访问器属性
q.theta // => Math.atan2(4, 3)
以上代码使用访问器属性定义了一个API,提供了一个数据集的两种表示(笛卡儿坐标和极坐标)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现