js对象与this指向

创建对象的方法

1.对象字面量法

var obj={}

var obj={

'first-name':'Tom',

'last-name':'bush',

 age:24,

Family:{

Brother:’tony’,

Father:’jack’

  }

}

对于合法的js标示符且不是表达式,并不强制要求用引号扩住属性名,对于不合法的标识符,则引号是必须的,'first-name',对象可以嵌套

 

2.数组字面量法

var box=['a','b',3,4,5];

alert(box[1]); //b

//遍历

for(x in box){

document.write(x+":"+box[x]+"<br/>");

}

//0:a

//1:b

//2:3

//3:4

//4:5

//不可以box['x']或box.x

二.this 指向

在全局里this指向window,在某个对象里 this指向该对象,但在闭包里this却指向window

看以下代码

 

var user="the Window";

var box={

    user:'the box',

    getThis:function(){

        return this.user;

    },

    getThis2:function(){

        return function (){

            return this.user;

        }

    }

};



alert(this.user);//the Window

alert(box.getThis());//the box

alert(box.getThis2()());//the Window

alert(box.getThis2().call(box));//the box  对象冒充

 

闭包不属于这个对象的属性或方法所以指向全局

还有一种解决方法

var box={

   user:'the box',

    getThis:function(){

        var that=this;//指向box

        return function(){

            return that.user;

        }

    }

}

alert(box.getThis()());//the box

 

 

 

 

你可能感兴趣的:(this)