Vue2 里为什么不在 Object.defineProperty 的get 函数里进行属性递归?
如果这样设计的话,在初始化阶段对深度嵌套的对象是一种优化。
类似这样
function isObject(val) { return typeof val === "object" && val !== null;}function observe(obj) { for (let key in obj) { let val = obj[key]; Object.defineProperty(obj, key, { get: function () { console.log("触发 getter"); if (isObject(val)) { observe(val); } return val; }, set: function (newVal) { console.log("触发 setter", newVal); val = newVal; }, }); }}
性能问题,每次递归整个对象非常耗性能,递归层次太深的话递归调用栈可能会溢出,时机也不太对放在 getter 里只有读的时候才会观察子对象,会漏掉其他更新还有延迟,还有就是,每次读的时候观察子对象,这样会重复观察,浪费资源,vue2的设计团队肯定是经过了权衡才定的。
比如这么写,就会报错 一定要这么写编译才不会出问题
rank ▲ ✰ vote url 44 455 162 534 url 为什么代码在一个函数里运行的更快? def main(): for i in xrange(10**8): pass main() 在Python中运行速度: real 0m1.841s user 0m1.828s sys 0m0.012s 然而不把它放在函数里: for i
问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法正常工作。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案:
举例来说,react或vue项目里。CSS用到url的时候,~和@是什么用法。在哪里配置的,MDN里好像也没写这个。求一个完整的步骤
问题内容: 我刚接触PHP,但是多年来我一直在使用类似的语言进行编程。我被以下内容弄糊涂了: 它产生了语法错误:这就是调用。 但这很好用: 碰了一会儿之后,我被告知您不能在默认属性中调用函数。你必须在做。我的问题是:为什么?这是“功能”还是草率的实现?有什么根据? 问题答案: 编译器代码建议这是设计使然,尽管我不知道其背后的官方原因是什么。我也不确定要可靠地实现此功能需要花费多少精力,但是目前完成
问题内容: 我刚读 ISO / IEC 9899:201x委员会草案-2011年4月12日 在其中我发现5.1.2.2.3程序终止 这表示如果您未在中指定任何return语句,并且如果程序成功运行,则main的右大括号}将返回0。 但是在下面的代码中,我没有指定任何return语句,但是它没有返回0 编译 问题答案: 该规则是在C标准的1999版本中添加的。在C90中,返回的状态未定义。 您可以通