作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试完成一个函数,该函数接收一个对象作为参数,并返回一个基于接收到的描述性对象生成的类(或构造函数)。不使用“eval”有什么解决办法吗?
// this is the function to create class.
function createClass (option) {
// TODO how to generate...
// return classGenerated
}
// then, i can do this to create a 'Node' class.
createClass({
name: "Node",
data: {
x: 0,
y: 0
},
methods: {
translate (dx, dy) {
this.x += dx;
this.y += dy;
}
}
})
// then i can create a instance by doing this below.
const node = new Node();
我已经通过“eval”函数完成了一个版本。我想知道是否还有其他更好的方法可以做到这一点。感谢您的帮助。
最佳答案
考虑使用类对象,而不是独立的动态变量名,并按类名索引(例如 Node
),以便您可以执行类似 const node = newcreatedClasses 的操作.Node()
:
const createdClasses = {};
function createClass ({ name, data, methods }) {
class theClass {
constructor() {
Object.assign(this, data);
}
}
Object.assign(theClass.prototype, methods);
createdClasses[name] = theClass;
}
createClass({
name: "Node",
data: {
x: 0,
y: 0
},
methods: {
translate (dx, dy) {
this.x += dx;
this.y += dy;
}
}
})
const node = new createdClasses.Node();
node.translate(5, 5);
console.log(node.x);
关于javascript - 如何从描述性对象动态生成类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54165322/
我有一个网站,我正在为所有链接使用干净的 URL。我想知道对于简短的基本 URL 与较长的描述性 URL 有何看法。 例如,如果我的网站是关于 Georgia Bulldog 足球新闻的,那么哪个网站
我一直在尝试在我们的 Node 应用程序中实现 Joi(joi 是独立的,而不是 hapi),它似乎正确地验证了模式,但错误总是一样的 [ValidationError: value must be
我是一名优秀的程序员,十分优秀!