无法设置未定义的属性
Cannot set property of undefined
我有一个javascript类,它正在使用requirejs
我创建了一个构造函数来创建它的实例,方法如下
define(function() {
function Websocket(socket) {
this.socket = socket;
this.ws = new Websocket('ws://localhost:'.concat(socket));
this.ws.binaryType = 'arraybuffer';
}
// WebSocket event handlers
Websocket.ws.onopen = function () {
console.log("Open");
// Sends a JSON encoded message
Websocket.ws.sendcmd("sum",2,3);
};
return Websocket
});
但是每当我这样做时,我都会Uncaught TypeError: Cannot set property 'onopen' of undefined
.我不确定问题是什么,因为 Websocket 对我来说似乎是定义的,如构造函数所示。有人有什么想法吗?
谢谢
构造函数和 Websocket
实例之间存在断开连接,这导致了您的问题。
如果要分配给特定Websocket
的ws
,则需要在创建Websocket
和相应的ws
后执行此操作。这通常在构造函数中,在您分配this.ws
之后。
但是,在您的示例中,Websocket
构造函数是递归的,应该会导致堆栈溢出。每次创建套接字时,都会在其中创建另一个套接字,从而形成无限深的套接字树。这可能不是你想要的,我建议将你的Websocket
函数(/constructor)重命名为具有唯一名称(可能是SocketWrapper
)的东西。
如果希望所有Websocket
都具有onopen
属性,则应使用 Websocket.prototype.onopen
语法。这将创建(并分配)一个属性给Websocket
的原型,因此所有new Websocket
都将具有该属性。情况似乎并非如此。
您
会收到该错误ws
因为它不是Websocket
构造函数的属性。在构造函数中,您需要this.ws.onopen = funciton() { ... }
相关文章:
- 主干中的模型属性未定义
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- JSON对象属性未定义
- Waypoint的循环,退出循环后属性未定义
- Javascript:错误“无法设置属性”..'未定义”
- 翡翠 - 显示对象属性 - 未定义
- 属性未定义,但控制台.log可以看到它
- JavaScript 对象的属性未定义
- Javascript 对象属性未定义(但属性已设置)
- DOM 元素属性未定义 - jquery / ruby on rails.
- Nodejs JSON 属性未定义
- 错误:窗口打开器的属性未定义
- angular Js:Array.lenght属性未定义
- 正在尝试访问JavaScript对象的属性=未定义
- Marionette属性未定义,请从API获取
- AngularJS作用域属性未定义
- 对象的属性未定义,尽管已指定值
- 为什么我一直收到一个错误,说对象属性未定义
- 对象属性未定义,但我看到它不是
- .map()img src属性未定义