2 lihaoef lihaoef 于 2016.05.06 21:38 提问

js中this作用域的问题
 function Box(){
    function Desk(){
        this.name = 'ggg';
    }
    Desk();

}
var b = new Box();
alert(b.name);
alert(this.name);

这个里边的执行完之后b.name是undefined
而window.name变成了ggg,为什么不是b对象改变了而是改变了window对象的

3个回答

CSDNXIAOS
CSDNXIAOS   2016.05.06 21:42

var myvar = '我是win的变量';
function winfun(){
alert(this);
alert(this.myvar);
}

alert('运行window的winFun方法...开始');
winfun();//相当于 window.winfun
alert('运行window的winFun方法...结束');

var ob......
答案就在这里:js的this作用域问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

devmiao
devmiao   Ds   Rxr 2016.05.06 23:55
showbo
showbo   Ds   Rxr 2016.05.07 13:30

    function Box() {
        var me = this;
        function Desk() {
            me.name = 'ggg';
        }
        Desk();//执行Desk时,Disk函数体内的this==window,并不是Box实例

    }
    var b = new Box();
    alert(b.name);
    alert(this.name);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Javascript 中 作用域、闭包与 this 指针
js 中的作用域,闭包的理解和运用,this 的理解和运用
for循环作用域问题
<br />以下程序会alert什么? <br /> var arr = []; for(var i=0; i< 2;i++){ var fn = function(){ alert(i) } arr.push(fn); } for(var j in arr){ var fn = arr[j]; fn(); }<br />答案是 2 , 2<br />其实理应让其alert 0,1才对<br />这是因为第一个for循环里面创建函数fn的时候里面的i
对js函数作用域的进一步理解
今天在写一个threejs的项目时,遇到了一个问题,我需要批量初始化一批图片作为纹理图放入数组中,然后再批量初始化一堆JSON模型,最后在把纹理图贴到对应的模型上面,这里就涉及到了几个问题。         1.首先加载图片和模型都是一个异步的操作,换句话说,你不能控制那张图片或者哪个模型先加载好,我想到的解决方法是,用一个计数的变量在每次调用加载器时,确定某张图片或者某个模型存放的位置,这样就
js中var的作用域和输出问题
关于js 中var的问题: 1、var声明的变量是函数作用域; 2、var声明变量会提前到文件最开始的地方,但是初始化还是在语句位置。 示例代码: var a; console.log(a); //undefined a=1; console.log(b); //报错 b is not defined b=2; console.log(c); //undefined
理解 js的作用域
1.ES5中的作用域for(var i =0;i<10;i++){} console.log(i)js这段代码,你觉得会输出什么?答案是10,熟悉java的同学肯定有点诧异,为什么会这样呢?因为js还是不同与java的,在ES5中,只有全局作用域和函数作用域,并没有块作用域,当然我们可以实现块作用域的功能。看下面代码:(function(){ for(var i =0;i<10;i++){} })(
关于js中的作用域和作用域链以及常见的问题和结果方法
js中作用域和作用域链的详解,以及常见的一不小心就出做错的小代码片段
详解JavaScript作用域
本篇博文花费了近一天的时间,无论你是拥有多年编程经验的JS开发者,还是初学前端的程序员,认真阅读本文,一定有你不知道的JS知识点. 一定会让您对作用域有更深刻的理解。 同样推荐先前所写的几篇关于javascript中This,从不同的角度去理解This.
关于js的闭包 匿名函数和作用域的几个小点
今天看到js的闭包那一章,被例子搞的头大:首先是关于闭包中的自由变量:var result=[]; function foo(){ var i= 0; for (;i<3;i=i+1){ result[i]=function(){ alert(i) } } }; foo(); result[0](); // 3 resu
js中for循环变量的作用域
js中for循环变量的作用域
js变量作用域的一些例子
本来想要在“作用域”这个专题上自己总结出一些东西的,结果想了好久都没有形成一个固定的思路,也不想贸然拷贝网上的说法。所以,还是先记录几个容易犯错的小例子,以后再来形成总结吧。1、“变量声明提升”var x = 'global';function f1() { console.log(x); }function f2() { console.log(x); /*