查看mozilla文档,查看正则表达式示例(标题为"使用匹配结果创建数组"),我们有以下语句:
input:一个只读属性,它反映与正则表达式匹配的原始字符串.
index:只读属性,是字符串中匹配的从零开始的索引.
etc ...是否可以在JavaScript中创建自己的对象,该对象具有只读属性,或者这是特定浏览器实现的内置类型的特权?
我有一个方法来处理来自我的谷歌JavaScript客户端(gapi)的响应:
var processResponse = function(response) {
result._state = 'loaded';
response._epoch = (new Date()).getTime();
...
Run Code Online (Sandbox Code Playgroud)
有几次我得到以下错误:
TypeError: Cannot assign to read only property '_epoch' of false
at processResponse (http://0.0.0.0:9000/scripts/services/haparaapi.js:110:31)
at wrappedCallback (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20892:81)
at http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20978:26
at Scope.$eval (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21967:28)
at Scope.$digest (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21796:31)
at Scope.$apply (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:22071:24)
at http://0.0.0.0:9000/bower_components/angular-gapi/modules/gapi-client.js:121:32
at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:604:138
at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:579:311
at Object.<anonymous> (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…1/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:163:76)
Run Code Online (Sandbox Code Playgroud)
这个错误通常不会发生,所以我没有设法记录响应的实际情况.
错误是什么意思?我不应该为响应分配值吗?
我希望能够做类似的事情
foo.x = 7;
Run Code Online (Sandbox Code Playgroud)
然后执行某些操作使该属性只读,以便其他代码无法更改它。我想要
foo.x = 10; //should do nothing
Run Code Online (Sandbox Code Playgroud)
无论如何,在 JS 中什么都不做吗?
按照快速原型方法,我正在 Marionette.js/backbone.js 中开发一个应用程序,并大量使用窗口对象将集合和视图绑定到全局堆栈(例如 window.app.data、window.app.views) 。
当然,将对象封装在单个类中并在需要时将它们作为参数传递总是更好(更平滑!)。然而,当应用程序及其潜在用例变得非常大时,这就会有一些限制。由于我处理的数据来自 API,因此任何感兴趣的人都可以访问,这是否证明将数据存储在窗口对象中是合理的?或者 ES6(或者特别是 Marionette.js)中是否有其他最佳实践来实现相同的结果,但以更私密的方式?!