JavaScript匿名函数和对象 Day4

匿名函数

  • 小括号
    表示指向一个空间
  • 小括号指向函数,实现调用匿名函数
(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闭包

  • 当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会“污染”全局的变量时,就可以用闭包来定义这个模块。
    原文作者:_Enco_
    原文地址: https://www.jianshu.com/p/d3d0704540f9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞