周志(9.9~9.15)

9.11  高三23章,虽然从来没有用过cookie和localstorage,但是9.12有人讨论过,书只能都介绍给你,至于用哪个,还要自己判断

9.12 js面试题 http://blog.sina.com.cn/s/blog_a04a2e0301016jn8.html

9.13~9.16 遇到匿名函数,call,什么的问题,根据这个执行的函数,each写出来,第二个参数我就是没有想起来怎么写,因为从来就没有这样用过,下面的each有两个,可以直接调用,也可以用call。

function each(args0,args1){
    for(i in args0){ 
        args1.call(this,i,args0[i]);
    }
}

function each(args0,args1){
    for(i in args0){ 
        args1(i,args0[i]);
    }
}

each(['fdasfdsa',5],function(index,value){console.log(index+","+value)});

 9.16 [] {} 都不能 == 或者 ===

var a = {} ,b = {}

a ==b  //false

9.17  群里人问的

var foo=1;
function Foo() {
alert(foo);  //undifined  因为在下面又重新定义了foo,无论在作用域中哪里定义变量,在赋值之前就算是undifined了,跟全局的 foo木有关系,感谢群里的小伙伴
var foo=2;
alert(this.foo);
this.foo=3;
}

var m1=Foo();
var m2=new Foo();
console.log(m1);

1.3,4次怎么执行的啊

2.如果想要var m1 = Foo()产生的m1和前面的m2完全一致,又该如何改造Foo函数?

1.

//new 表达式之后

//返回(return)一个引用对象(数组,对象,函数等),都将覆盖new创建的匿名对象
//如果返回(return)一个原始类型(无 return 时其实为 return 原始类型 undefined),那么就返回 new 创建的匿名对象。

/*new 的过程
(1) 创建一个新对象;
(2) 将构造函数的作用域赋给新对象(因此this 就指向了这个新对象);
(3) 执行构造函数中的代码(为这个新对象添加属性);
(4) 返回新对象。*/

2. 想要让this.foo 为undefined,首先因为全局函数中的this在执行的时候指向了window,所以this.foo = 1

所以需要改变全局函数中this的作用域,我想到的:

var foo=1;

var getFoo = function(){
        alert(this.foo);
    }

var Foo = function () {
    alert("a " + foo);
    var foo=2;
    getFoo.call(Foo);
    //alert("b " + this.foo);
    this.foo=3;
    
}

m1 = Foo()
var m2=new Foo();
console.log(m1);
原文地址:https://www.cnblogs.com/della/p/3324771.html