Google Chrome Object.defineProperty中的错误行为
Wrong behaviour in Google Chrome Object.defineProperty?
我正在尝试创建一个带有setters和getters的对象,这是我的代码:
var Player = function(height){
var _height = height;
Object.defineProperty(this, 'height', {
enumerable: false
, configurable: true
, writable: false
, get: function(){return _height;}
, set: function(val){_height = val;}
});
}
var myPlayer = new Player(10);
即使定义属性选项的writable
属性设置为 false,我也会收到以下错误:
Invalid property. A property cannot both have accessors and be writable or have a value, #<Object>
当然,当writable
设置为 true 时也会发生同样的情况,但是如果我删除writable
行,错误就会消失。
我做错了什么,还是这是一个错误?这发生在谷歌浏览器版本30.0.1599.66
Mozilla MDN for Object.defineProperty
澄清了这一点:
对象中存在的属性描述符有两种主要形式:数据描述符和访问器描述符。数据描述符是具有值的属性,该值可能是可写的,也可能是不可写的。访问器描述符是由一对 getter-setter 函数描述的属性。描述符必须是这两种风格之一;它不能两者兼而有之。
这意味着,您可以使用其中之一:
-
writable
和value
-
get
和set
但是您不能使用它们的任何组合。在您的示例中,您指定 writable
属性,这意味着它是一个数据描述符,不允许get
和set
属性。
相关文章:
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- chrome在WebSocket握手期间获取新错误
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- Chrome Javascript日期构造函数错误
- chrome.storage.sync未定义错误
- "资源不足错误“;当从Chrome控制台重复发出ajax请求时
- 加载Chrome扩展中的脚本错误
- 当与Dojo验证一起使用时,Chrome 41密码保存会做出错误的选择
- 仅打开调试器时出现Google chrome扩展错误
- Redux开发工具Chrome扩展Immutable.js导致错误
- Javascript代码在chrome和Firefox上给出错误
- 未捕获的语法错误:意外的令牌 = (Chrome)
- 尝试从我的 chrome 扩展程序访问 gmail 中的 iframe 时出现未定义的错误,但不是从开发者控制台访问
- JavaScript cookie和未捕获的语法错误:Chrome中出现意外的令牌u
- 在Firefox中出现404错误Chrome在IE上运行顺畅可能是什么原因
- 在控制台DOM中插入HTML代码后出现错误(Chrome浏览器)
- Javascript 未捕获的语法错误:Chrome 调试器中出现意外的标识符错误
- css上的滚动错误chrome/firefox