写到这代码只用于试验目的。在这里,我用Object.defineProperty创建一个名为'fullName'
性质和使用set我定义的另一个属性叫middleName
人。我不得不通过fullName
。无论他们有枚举财产TRUE
传递价值middleName
,使for..in
回路可以访问它。但是后来我想从删除中间名属性object.But它仍然是there.Why它仍然存在??为什么这个属性不希望被deleated
(function(){
person = {
firstName: 'will',
lastName: 'Smith'
};
Object.defineProperty(person,'fullName',{
set:function(mid){
Object.defineProperty(person,'middleName',{
value : mid,
enumerable: true,
writeable : false
});
},
get:function(){
document.write(this.middleName);
},
enumerable:true
});
person.fullName='lol';
person.fullName; \t
document.write(Object.getOwnPropertyNames(person)+'</br>'); \t
for(key in person){
document.write(key+'</br>');
} \t \t
document.write('\n'); \t \t
delete (person.middleName);
document.write(person.middleName+'</br>');
for(key in person){
document.write(key+'</br>');
}
})()
'delete'操作者意图与**变量**一起使用。 'person.middleName +“”'你试图删除是** **表达式是 – hindmost 2014-10-11 11:13:38
是当我在编辑文章。它不包括在实际code.I打错了已编辑post.check它,请 – 2014-10-11 11:15:35
@天诛地灭,我想你指的是[*删除*运算符(http://ecma-international.org/ecma-262/5.1/#sec-11.4.1)可以删除对象的属性,不变量(参见[ MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete))。 – RobG 2014-10-11 11:25:19