[英]Object.create method in javascript
作为javascript的初学者,我试图从这里了解Object.create()方法
https://developer-new.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/create
在示例代码中,第18行。创建一个accessable属性,其writeable设置为true。 我还读到可写只适用于数据描述符。
试过跑,
var o = Object.create(Object.prototype, {
// foo is a regular "value property"
foo: {
writable:true, configurable:true, value: "hello"
},
// bar is a getter-and-setter (accessor) property
bar: {
writable: true,
configurable: false,
get: function() { return 10 },
set: function(value) { console.log("Setting `o.bar` to", value) }
}
});
console.log(o);
我得到invalid property error
。
问题是writable
和set
/ get
是互斥的。 该代码在Chrome中生成此有用的错误:
Invalid property. A property cannot both have accessors and be writable...
这有一定的逻辑意义:如果您在属性上set
/ get
访问器,则该属性永远不会被写入和/或读取,因为任何读取/写入它的尝试都将被访问器函数拦截。 如果将属性定义为writable
属性并为其提供访问器函数,则同时说:
错误只是阻止您指定矛盾。 我假设你写了一个getter和setter,你真的不希望该属性是writable
。 只需删除该行,您的代码就可以完美运行。
迟到的回答,不是在寻找选票,但希望这会有所帮助。
有两种属性。 每个属性都是:
具有以下四个属性的data属性:
或者具有以下四个属性的访问者属性:
因此,没有任何属性可以兼具get
和writable
。 这就是JavaScript的方式! 有关详细信息,请参阅ECMAScript标准的第8.6节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.