JS(十六)继承模式,命名空间,对象枚举(下)
2018-03-18 本文已影响12人
StevenTang
写在最前面
命名空间
- 管理变量,防止污染全局,适用于模块发开发
主要就是开发过程中遇到的命名冲突的问题,可以用对象的方法解决
var wu = {
name : yanzu,
age : 18,
};
var shen = {
name = "cheng",
age = 18;
}
//调用的时候
wu.name
shen.name
//不冲突
也可以用闭包的方法
var name = 345;
var init = (function(){
var name = "abc";
var name = 123;
function callName(){
console.log(name);
}
returnfunction(){
callName;
}
}())
//这样子写就算 外部有重复的变量也不会冲突,因为执行完就被销毁了。等待下次被执行。
其实现在的代码管理工具还有打包工具很多如 WebPack之类的...
对象的枚举
遍历 枚举
- 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);//上面会打印出obj的属性
console.log(obj[key]);//会打印属性值
}
hasOwnProPerty
var obj = {
name : "123",
age: 12,
sex:"male";
height :180,
__proto__:{
lastName : "wu"
}
}
for(var key in obj){
console.log(obj[key]);//会打印属性值
//这样子直接打印也会把原型上面的方法给打印出来
//可以用hasOwnProPerty来过滤掉
if(obj.hasOwnProPerty){
console.log(obj[key]);
}
//这样就不会把他原型上面的方法给过滤掉
}
in
//判断属性是不是在对象里面,包括原型上面的
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对象 是不是 B构造函数构造出来的(官方给出的介绍)
//看A对象的原型链上 有没有 B的原型