寫在最前面
命名空間
- 管理變量,防止污染全局,適用于模塊發(fā)開發(fā)
主要就是開發(fā)過程中遇到的命名沖突的問題,可以用對(duì)象的方法解決
var wu = {
name : yanzu,
age : 18,
};
var shen = {
name = "cheng",
age = 18;
}
//調(diào)用的時(shí)候
wu.name
shen.name
//不沖突
也可以用閉包的方法
var name = 345;
var init = (function(){
var name = "abc";
var name = 123;
function callName(){
console.log(name);
}
returnfunction(){
callName;
}
}())
//這樣子寫就算 外部有重復(fù)的變量也不會(huì)沖突,因?yàn)閳?zhí)行完就被銷毀了。等待下次被執(zhí)行。
其實(shí)現(xiàn)在的代碼管理工具還有打包工具很多如 WebPack之類的...
對(duì)象的枚舉
遍歷 枚舉
- for in
- hasOwnProPerty
- in
- instanceof
for...in
var obj = {
name : "123",
age: 12,
sex:"male";
height :180,
}
for(var key in obj){
console.log(key);//上面會(huì)打印出obj的屬性
console.log(obj[key]);//會(huì)打印屬性值
}
hasOwnProPerty
var obj = {
name : "123",
age: 12,
sex:"male";
height :180,
__proto__:{
lastName : "wu"
}
}
for(var key in obj){
console.log(obj[key]);//會(huì)打印屬性值
//這樣子直接打印也會(huì)把原型上面的方法給打印出來
//可以用hasOwnProPerty來過濾掉
if(obj.hasOwnProPerty){
console.log(obj[key]);
}
//這樣就不會(huì)把他原型上面的方法給過濾掉
}
in
//判斷屬性是不是在對(duì)象里面,包括原型上面的
var obj = {
name : "123",
age: 12,
sex:"male";
height :180,
__proto__:{
lastName : "wu"
}
}
"name" in obj //打印true
lastName in obj //打印true
instanceof
A instanceof B
// A對(duì)象 是不是 B構(gòu)造函數(shù)構(gòu)造出來的(官方給出的介紹)
//看A對(duì)象的原型鏈上 有沒有 B的原型