码迷,mamicode.com
首页 > 编程语言 > 详细

Javascript构造函数中变量的作用域问题

时间:2014-09-29 19:30:41      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:js构造函数和普通函数调用   构造函数中变量的作用域   

构造函数可以与new一起使用,代表创建对象;也能够当做普通的函数调用,因为它也是一个函数。

function Person(name) 
{
	this.name=name;
}

Person(12);
alert(window.name);//12

 

可以看到当构造函数被当成普通函数调用的时候,this代表的是全局的window对象。很显然把构造函数当成普通函数调用,不是好的做法, 也没有什么道理要这么做。实际中应该杜绝这样奇怪的用法,以免产生奇怪的问题。

 

function Person(name,sex) 
{
    this.name=name;
    var name1="22";
    name2=sex;
}
var per = new Person("aty","boy");
alert(per.name);// aty
alert(per.name1);//undefined
alert(per.name2);//undefined
alert(window.name2);//boy

 

构造函数中定义变量使用this是成员变量;使用var是局部变量;不加关键字是全局变量,会添加到window对象中。这样解释了为什么构造函数中要使用this关键字。

Javascript构造函数中变量的作用域问题

标签:js构造函数和普通函数调用   构造函数中变量的作用域   

原文地址:http://blog.csdn.net/aitangyong/article/details/39673699

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!