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闭包

  • 当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会“污染”全局的变量时,就可以用闭包来定义这个模块。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,382评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,367评论 1 10
  • 创建对象 对象是无序属性的集合,其属性可以包含基本值,对象或者函数,即由若干个“键值对”(key-value)构成...
    LeoCong阅读 1,215评论 0 0
  • 一、面向过程和面向对象的区别、联系 1.面向过程编程:注重解决问题的步骤,分析问题需要的每一步,实现函数依次调用。...
    空谷悠阅读 4,367评论 1 11
  • 如今“代沟”有了更鲜明生动的语言符号来表意。比如微信和网络直销更多被接近40的人们称为“互联网思维”。前几天听到一...
    咖啡大人阅读 4,104评论 5 12