js命名空间/对象枚举/遍历/for in循环

命名空间

通过闭包来实现变量的私有化,来解决命名冲突的问题,防止污染全局变量

        var initDemo1 = (function(){
            var name =222;
            function callName(){
                console.log(name);
            }
            return function(){
                callName();
            }

         }())
         var initDemo = (function(){
            var name =123;
            function callName(){
                console.log(name);
            }
            return function(){
                callName();
            }

         }())

一般来说 init命名的函数作为入口函

属性的调用方法 . [‘string’]

  1. 通过deng[‘ddd’] 来调用deng的ddd方法
var deng = {
    wife1:{name : 'xiaohu'},
    wife1:{name : 'xiaomao'},
    wife1:{name : 'xiaogou'},
    wife1:{name : 'xiaozhu'},
    sayWife : function (num){
        return this['wife' + num];
    }
}

对象的枚举(遍历),for in 循环 forin循环用于对象遍历中

操作符 hasOwnproperty in instanceof

        let obj = {
            a : 123,
            b : 234,
            c : 345
        }

        for(let key in obj){
            console.log(key);
        }

key为 obj中的每个属性

        let obj1 = {
            a : 123,
            b : 234,
            c : 345
        }

        for(let key in obj1){
            console.log(obj1[key]);
        // 如果为obj.key 则会打印出3个undefined
        // 因为 obj.key 解释器会把它理解为obj里面的key属性
        //obj里面没有key属性,所以打印undefined
        }

如果为obj.key 则会打印出3个undefined,因为 obj.key 解释器会把它理解为obj里面的key属性,而obj里面没有key属性,所以打印undefined

  • 在枚举里面访问属性,只能用[] 的方法访问 而不能用 . 的方法访问
        let obj1 = {
            a : 123,
            b : 234,
            c : 345,
            __proto__ : {
                lastName : "last"
            } 
        }

        for(let key in obj1){
            console.log(obj1[key]);
        }

遍历obj1 会把原型的属性也遍历出现 但是不会遍历系统自设的属性
当只想遍历自己的属性时,可以用hasOwnProperty(’’)

        let obj1 = {
            a : 123,
            b : 234,
            c : 345,
            __proto__ : {
                lastName : "last"
            } 
        }

        for(let key in obj1){
            if(obj1.hasOwnProperty(key)){
                console.log(obj1[key]);
            }
   
        }

hasOwnProperty(“key”) 用于判断这个属性是不是自己的 ,返回的结果为布尔值

if('key' in obj) 

‘属性’ in obj 判断这个属性在不在obj中(obj能不能访问这个属性),继承来的属性可可以访问,返回值为布尔值

 A instanceof B

instanceof 判断 A对象的原型链上 有没有B的原型
当返回这个变量 ,有可能是数组有可能是对象 就可以用instanceof来判断

判断数组还是对象的三种方法

  1. constructor

数组的constructor是Array 对象的construtor是Object

  1. instanceof

[] isntanceof Array true {} instanceof Array false

  1. toString

Object.prototype.toString.call([]); 返回[object Array]
Object.prototype.toString.call(123); 返回[object Number]
Object.prototype.toString.call({}); 返回[object Object]

原文地址:https://www.qianqianhaiou.cn/index.php/archives/79/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值