我在玩对象和构造函数之类的东西,我想知道是否有一种方法可以根据最初定义的值将值绑定到变量。我有以下代码:
打字稿
let cr = "create",
ap = "apply",
$this = {
set: (prop, value) => {
this[prop] = value;
}
};
function creator() {
this.$ = (array: Object[]) => {
array.forEach((kp: Object) => {
let key = Object.keys(kp)[0];
let val = kp[Object.keys(kp)];
$this[key] = val;
creator.create(key, { value: val });
});
};
this.apply = (...objects: Object[]) => {
objects.forEach((obj: Object) => {
creator.call(obj);
});
};
}
function create(obj) {
function createValues(arr) {
let instance: Object = new obj();
let …Run Code Online (Sandbox Code Playgroud) 我正在使用 javascript 进行一个项目,我正在尝试制作类似 的项目AngularJS,但有点不同,只是为了好玩,因为我认为数据绑定是一个非常酷的想法,并且在正确实施时非常有用。我Proxy定义了一个对象来检测何时发生更改,以及一些处理 HTML 和数据绑定的函数。它正在工作,并将替换如下内容(main = 'hello'):
<div>
%{ main }%
</div>
Run Code Online (Sandbox Code Playgroud)
有了这个:
<div class = 'binding-0'>
hello
</div>
Run Code Online (Sandbox Code Playgroud)
如果“main”更改为其他内容,div元素也会更改其值。但是,每当我使用set为全局对象定义的方法来处理在 html 中找到的所有变量时,我都会收到此错误:
Uncaught TypeError: 'set' on proxy: trap returned falsish for property 'main'
at app.js:112
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?它仍然会做它应该做的事情,但总是抛出这个错误。
这是代码:
<div>
%{ main }%
</div>
Run Code Online (Sandbox Code Playgroud)
<div class = 'binding-0'>
hello
</div>
Run Code Online (Sandbox Code Playgroud)
我现在不知道如何在不抛出错误的情况下使其正常工作。我try {} catch (TypeError) {}在不同的地方尝试过,但没有运气。