改进机能的最好要领:JavaScript耽误执行属性
然后,getter函数举办计较并再次挪用Object.defineProperty()。对付data来说,将该属性从头界说为具有特定值的数据属性,而且将其变为不行写且不行设置以掩护最终数据。下次data读取该属性时,将从存储的值中读取该属性。该data属性此刻仅作为本身的属性存在,而且在第一次读取之前和之后都具有沟通的浸染: const object = new MyClass(); console.log(object.hasOwnProperty("data")); // true
const data = object.data; console.log(object.hasOwnProperty("data")); // true 对付类,这很也许是您要行使的模式。另一方面,工具模式下可以行使更简朴的要领。 工具的耽误加载属性假如行使的是工具模式而不是类,则进程要简朴得多,由于在工具模式上界说的getter与数据属性一样被界说为可列举的自身属性(而不是原型属性)。这意味着您可觉得类行使耽误加载属性模式,而不会造成紊乱: const object = { get data() { const actualData = someExpensiveComputation();
Object.defineProperty(this, "data", { value: actualData, writable: false, configurable: false, enumerable: false });
return actualData; } }; console.log(object.hasOwnProperty("data")); // true const data = object.data; console.log(object.hasOwnProperty("data")); // true 总结通过从从头界说为数据属性的会见器属性开始,您可以将计较推迟到第一次读取该属性时,然后将功效缓存起来以备后用。这种要领合用于类和工具笔墨,而且在工具模式中更简朴一些,由于您不必担忧getter最终会呈此刻原型上。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |