Al *_*een 8 javascript node.js ecmascript-6 es6-class
我将代码从 es5 类原型表示更改为 es6 类表示。但我收到错误
这是迁移到 es6 之前和之后的代码
ES5语法
function RoutingScreen (context) {
Object.assign(this, {route} = context)
}
RoutingScreen.prototype.onEnter = function(state) {
state.scaning = false
state.status = 'Scan to continue'
curState = states.init
};
Run Code Online (Sandbox Code Playgroud)
ES6语法
class RoutingScreen{
constructor(context){
Object.assign(this, {route}= context)
}
onEnter(state){
state.scaning = false
state.status = 'Scan to continue'
curState = states.init
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误
类型错误:代理上的“设置”:陷阱为属性“扫描”返回错误
但es5代码工作正常。
我使用的是节点版本8.1
我不知道我在这里做错了什么。
这是我调用这些方法的地方
function setRoute (newRoute) {
var r = currentRoute()
console.log('changeRoute from ' + (r?r.route:'""') + ' to ' + newRoute)
if (r && r.route == newRoute) {
return true
}
if (!r || !r.onExit || r.onExit(state) !== false) {
stateStack.pop()
}
r = newRoute ? pushRoute(newRoute) : currentRoute()
state.session.route = r.route
return !r.onEnter || r.onEnter(state)
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*Cox 12
当我尝试编写 set 方法时,我在阅读 JavaScript Ninja 书的使用代理对象的示例中遇到了同样的问题。
set: (target, key, value) => {
target[key] = value;
}
Run Code Online (Sandbox Code Playgroud)
这会在严格模式下引发 TypeError:
未捕获的类型错误:代理上的“设置”:陷阱返回错误的属性
由于它返回“falsish”,我通过使用以下方法返回 true 来修复它:
set: (target, key, value) => {
target[key] = value;
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11424 次 |
| 最近记录: |