对JavaScript对象的理解 上篇

什么是对象?
对象和散列表在结构上很是相似都是键值对的集合。


对象的创建方法


传统的方法是使用new Object()方式。
然后,在程序的执行过程中,
动态地为其添加相关的静态属性和动态属性。
var obj = new Object();
obj.words="凡人皆有一死";
obj.house="风息堡";
obj.future = function() {
}


另一种就是采用字面量的方式:
var obj = {
words: "凡人皆有一死",
house: "风息堡",
future: function() {
}
}


JavaScipt中的属性【理解】
这个知识点很少用到,但是对于理解JavaScript的属性还是可以的。
在Java中对属性的限定或者说修饰有四种:
public, protected, private指明的属性的可见范围。
static指明了属性的作用域。
final指明了属性是否可以修改。
getter/setter指明了属性的读取。
Java中如此,在逻辑上JavaScript有些类似,但是不同点也有很多。


JavaScript中的属性分为数据属性和访问器属性。


首先来看数据属性,每一个数据属性都有4种特性,
configurable, enumerable, writable, value。
configurable: 属性是否可以delete。
enumerable: 是否可以通过for-in循环遍历属性。
writable能否修改属性的值。
value:存取属性的值。
由于以上属性默认都是true,
所以感觉不到限制,感觉不到限制,也就认识不了它。
突然发现自己写下了一个哲学意味浓厚的句子。
"感觉不到限制,感觉不到限制,也就认识不了它"。
属性特性的修改采用Object.defineProperty()方法。
比如:
Object.defineProperty(obj, "words", {
configurable: false,
writable: false;
})
传入三个参数,对象,对象中的属性,特性值对象。
这样设定了以后,words属性就不可以被删除,而且不可以
修改它的值,只能够查看它的值。


另一个属性是访问器属性
比如:
var person = {
username: "luohao",
_password: "china"
}


Object.defineProperty(person, "password", {
get: function() {
return _password;
},
set: function(password) {
this._password = password;
}
});
_password带有下划线,表示password是访问器属性。
验证了一下,发现有问题。
console.log(person.username);
console.log(person._password);

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/80687532
今日推荐