怎么让调用对象属性返回布尔值

讨厌走开啦
领域专家: 前端开发技术领域
2017-12-17 02:02:49
构建一个对象:

let a = {"x": {"y": "zzz"}};

希望实现的效果是:

a.x = true;
a.x.y = true;

函数的话可以重写valueOf来达到这样的效果,对象的话求大佬指点。
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
讨厌走开啦 2017-12-17
  • 打赏
  • 举报
回复
对啊 我需要直接调用,比如if(a.x){..}这样我可以进去。
天际的海浪 2017-12-17
  • 打赏
  • 举报
回复
引用 2 楼 lqlqlq007 的回复:
to 楼上: 对函数来说valueOf可以,但是对象不行。调用a.x的时候并不会调用对应的valueOf,而是打印对象本身。
valueOf是在需要类型转换时才调用,如转换为数值 a.x.valueOf = function () { return 6; }; alert(10-a.x);//输出4 当上下文需要的类型就是对象原本的类型时,不会调用valueOf
讨厌走开啦 2017-12-17
  • 打赏
  • 举报
回复
to 楼上: 对函数来说valueOf可以,但是对象不行。调用a.x的时候并不会调用对应的valueOf,而是打印对象本身。
天际的海浪 2017-12-17
  • 打赏
  • 举报
回复

let a = {"x": {"y": new String("zzz")}};
a.x.valueOf = a.x.toString = function () {
	return true;
};
a.x.y.valueOf = a.x.y.toString = function () {
	return true;
};

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧