美文网首页
JavaScript匿名函数和对象 Day4

JavaScript匿名函数和对象 Day4

作者: _Enco_ | 来源:发表于2017-07-04 11:41 被阅读0次

    匿名函数

    • 小括号
      表示指向一个空间
    • 小括号指向函数,实现调用匿名函数
    (function (){
      console.log(666);
    })();
    
    • 匿名函数下的自调用
    var a = (function (num){
            if(num>1)
              return num*arguments.callee(num-1);
            return num;
          })(3);
          console.log(a);
    

    对象

    • 对象的直接声明(每对键值对后都有个逗号,最后一对可以不加逗号)
    • key:value
      1.字母(加引号,不加引号)
      2.数字(加引号,不加引号)
    var person = {name : "karen", // 键值对 key:value
                          age : 46,
                          tool:function(){} //,
                          }
    
    • 对象属性使用方法
    var person  = {name : "enco", age : 18}
    var a = person.name;
    var b = person["name"];
    
    • 数组是特殊的对象
    var arr = [1,2,3,4]
    console.log(arr);
    
    • 对象可以存所有类型的数据
    • 对象添加数据
    person.tool = 18;
    
    • 访问对象中没有的值
    var person = {width: 200}
    console.log(person.height); //undefined
    
    • 访问对象中没有的空间
    var person = {width: 200}
    person.height = 30; // 会声明这个没有的空间并初始化
    

    常见创建对象的方式

    var person = new Object();
    var person = {};
    function person(name,age){
      var obj = new Object();
      obj.name = name;
      obj.age = age;
      return obj;
    }
    person("karen",18);
    function person(name,age){
      this.name = name;
      this.age = age;
    }
    var p1 = new person("karen",18); //new 开辟一个对象空间,this指向对象空间 
    console.log(p1.name);
    

    this

    • this 代表谁在执行大括号 this就是谁

    prototype

    • prototype 属性使使用者有能力向对象添加属性和方法。(这里的对象指没有实例化的对象,及类:代码中的objecrt)
    object.prototype.name=value;
    
    function employee(name,job,born){
    this.name=name;
    this.job=job;
    this.born=born;
    }
    var bill=new employee("Bill Gates","Engineer",1985);
    employee.prototype.salary=null;
    

    数组的创建

    var a = [1,"qwe",!5];
    var a = new Array();
    

    js中的new

    JS构造函数及new运算符

    • prototype 对f1是不可见的,也就是说,f1不会查找prototype中的属性和方法。
    function f(){}
    f.prototype.foo = "abc";
    console.log(f.foo); //undefined
    
    • prototype的主要作用就是继承。 通俗一点讲,prototype中定义的属性和方法都是留给自己的“后代”用的,因此,子类完全可以访问prototype中的属性和方法,proto的作用就是保存父类的prototype对象,JS在通过new 表达式创建一个对象的时候,通常会把父类的prototype赋值给新对象的proto属性,这样,就形成了一代代传承。
    function f(){}
    f.prototype.foo = "abc";
    var obj = new f();
    console.log(obj.foo); //abc
    

    js闭包

    干货分享:让你分分钟学会JS闭包

    • 当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会“污染”全局的变量时,就可以用闭包来定义这个模块。

    相关文章

      网友评论

          本文标题:JavaScript匿名函数和对象 Day4

          本文链接:https://www.haomeiwen.com/subject/yksthxtx.html