美文网首页JavaScript基础教程
JS(十六)继承模式,命名空间,对象枚举(下)

JS(十六)继承模式,命名空间,对象枚举(下)

作者: StevenTang | 来源:发表于2018-03-18 20:01 被阅读12次

    写在最前面

    命名空间

    • 管理变量,防止污染全局,适用于模块发开发

    主要就是开发过程中遇到的命名冲突的问题,可以用对象的方法解决

    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的原型
    

    相关文章

      网友评论

      本文标题:JS(十六)继承模式,命名空间,对象枚举(下)

      本文链接:https://www.haomeiwen.com/subject/nflyqftx.html