什么类/类型是未定义的,是否可以向其扩展/添加方法
What class/type is undefined, and is it possible to extend / add a method to it?
我有一个哈希'h',代码如下:
h[key].dostuff()
当哈希中不存在键时,h[key] 是未定义的,我收到一个错误,说我无法调用未定义的方法"dostuff"。
如果undefined是一个可扩展的类,是否有办法将此方法添加到undefined?
我确定这一定是一种常见情况,那么是否有一种首选的方法来处理此问题,而无需诉诸解决方法功能,例如 hh(key(,我可以在其中操纵未定义的结果?
谢谢。
由于undefined
在javascript中等同于false
,因此您可以将值检查和函数调用结合起来,如下所示:
h[key] && h[key].dostuff();
这可确保如果h[key]
具有值,则调用dostuff()
。
if( h[key])
h[key].dostuff()
这是一个检查"如果值存在,doStuff((">
你总是可以做这样的事情:
h.get = function(key) {
if(this.hasOwnProperty(key))
return this[key];
//here return a default object, whatever that would be
return {doStuff: function() {
//default doStuff function
}};
};
h.get(key).doStuff();
我知道这是一个有点强制的解决方案,但它可以以某种方式模仿默认行为。
相关文章:
- 可以't扩展EventEmitter
- 如何创建可以向下滚动的导航
- 在进行服务器端渲染时,我可以向客户端发送React组件吗
- 有人可以向我解释一下代码的JavaScript / Ajax部分是做什么的
- Ember.js-定义一个全局函数,该函数可以向操作返回值
- 是否可以向用户发送javascript代码's浏览器安全
- 在这种情况下,有什么方法可以向`.call()`发送更多的参数吗
- 远程脚本是否可以向托管脚本的服务器发出请求?同源政策
- 我可以向数组添加对象键吗
- 有没有一个简单的脚本可以向美国/加拿大游客显示脚本1,向其他游客显示脚本2
- 在Firefox和IE中,向按钮添加填充可以向下推其他按钮
- 向扩展数组的JS集合添加对象(继承?)
- 我可以向用户隐藏Javascript中的一些代码吗?
- 有人可以向我解释javascript getCookie()中while循环的功能吗?
- ajax 调用返回时可以向页面添加新的 javascript 函数吗?
- 在 AngularJS 中,如何使指令成为对象,以便可以向它“传递消息”(在其上调用方法)
- 是否可以向现有 JSON 数据添加新属性
- 是否可以向 JavaScript 函数添加属性
- 什么类/类型是未定义的,是否可以向其扩展/添加方法
- 有没有一种更优雅、可扩展的方式可以向JQuery验证自定义方法添加多个条件