Javascript 构造函数中defineProperties的用法
我喜欢使用Object.defineProperties方法定义属性。此外,我喜欢有getter/setter 我已经想出了这个例子:Javascript 构造函数中defineProperties的用法,javascript,Javascript,我喜欢使用Object.defineProperties方法定义属性。此外,我喜欢有getter/setter 我已经想出了这个例子: var Car = function(vendor, speed) { Object.defineProperties(this, { vendor: { get: function() { return vendor; }, set: function(newVendor) { v
var Car = function(vendor, speed) {
Object.defineProperties(this, {
vendor: {
get: function() {
return vendor;
},
set: function(newVendor) {
vendor = newVendor;
},
enumerable: true
},
speed: {
get: function() {
return speed;
},
set: function(newSpeed) {
speed = newSpeed;
},
enumerable: true
}
});
}
我不明白的是如何初始化属性
在我的示例中:我是否必须在定义下面写“this.vendor=vendor”
此外:可配置参数的用途是什么
文档中说它指定了是否可以更改属性描述符。
这到底是什么意思
我不明白的是如何初始化属性。在我的示例中:我是否必须在定义下面写“this.vendor=vendor” 这对于初始化属性是正确的,您将执行
this.vendor='vendorValue'代码>
(将其视为简单属性)
此外:可配置参数的用途是什么
configurable
如果设置为true,则允许使用对象重新定义属性描述符。defineProperty
或对象。defineProperties
默认为false,如果再次使用对象。defineProperty
或对象。defineProperties
重新定义属性,则会引发错误
描述符是传递给对象.defineProperty
(或对象.defineProperties
)的属性的描述
初始值
在我的示例中:我是否必须在定义下面写“this.vendor=vendor”
你可以。但是你也可以像这样使用值描述符
vendor: {
set: function (newVendor) { ... },
enumerable: true,
value: 5 // here is the initial value
}
可配置
可配置参数的用途是什么?文档中说它指定了是否可以更改属性描述符。那到底是什么意思
指定是否可以删除属性或更改其描述符。这意味着,如果设置为false,则一旦定义,就不能使用Object.defineProperties
更改getter、setter、enumerable、writable等描述符
假设您有一些对象var hat={}
。我们在该对象上创建一个属性hat.style=“fancy”
。默认情况下,此属性是可配置的。但是,当使用Object.defineProperties
时,默认情况下它是false
因此,假设我们将可写
(属性描述符)更改为false
。现在,hat.style=“wacky”
不起作用,hat.style
的值仍然是“fancy”
。但是,通过将configurable
设置为false
,可以将style
属性更改为不可配置。现在我们无法将可写
描述符设置回真
,甚至无法再次将可配置
设置为真
参考资料和进一步阅读:
非常感谢。我希望我能给你的答案打分。但是我到现在为止还没有获得足够的学分。。。
vendor: {
set: function (newVendor) { ... },
enumerable: true,
value: 5 // here is the initial value
}