12月6日答疑问题收集


(班主任-茜茜) #1

大家不会的问题回复到本帖下
代码题写入 jsbin
根据大家回复的情况选择
晚上答疑群内文字交流


(10537) #2


(区家乐) #3
var a = {},
    b = {key: 'b'},
    c = {key: 'c'};

a[b] = 123;
a[c] = 456;

console.log(a[b]);
//老师,为什么打印出来的是456?

#4

能说说nodejs实现后端服务器么?这个有点晕


(区家乐) #5

这个同学的提供的代码

var a = 'window',
    obj = {
      a:'obj',
      fn: (function(){
        console.log(this.a);
        return function(){
          console.log(this);
        }
      })()
    }

obj.fn()
var f = obj.fn;
f()

经过变量提升,和将函数()执行改变成函数.call()执行,同时加了一点测试代码

var a,obj,f;
a = 'window',
obj = {
  a:'obj',
  fn: (function(){
    console.log('第一次打印')
    console.log(this.a);
    return function(){
      console.log('第二次打印')
        console.log(this);
      }
    }).call(undefined)
}

obj.fn.call(obj)
f = obj.fn;
f.call(undefined)

//第一次打印,打印出字符串'window'
//第二次打印,打印出obj
//第二次打印,打印出window

不知道这样理解对不对,如果有错,还希望老师指出


(10537) #6

你好,谢谢你的回复。
能把打印结果的原因解释一下吗,谢谢了


(区家乐) #7

老师等下,会答疑的,你提出自己的问题就好


(区家乐) #8
var myobject={
  foo:"bar",
  func:function(){
    console.log('this为:',this)
    var self=this;
    //老师,我不是很清楚这个this指向myobject?
    //是因为执行这条yobject.func.call(myobject)时,this指向myobject?
    console.log(this.foo);//bar
    console.log(self.foo);//bar
 
  (function(){
  console.log(this.foo);//undefined 这个this指向window
  console.log(self.foo);//bar
  })();
  }
};
myobject.func();
// myobject.func.call(myobject);

(新望) #9

对的