js中对象及函数的初步

1 篇文章 0 订阅
1 篇文章 0 订阅
对象
对象的创建方法
  • var o=new object(); //构造函数创建法
  • var o={a:1}; //字面量创建法
  • 名字称作key(键),值称为value(值)即键值对的形态
  • 每个键对应唯一的值,
对象的调用方法
  • console.log(o.a); 用点语法不加双引号
  • console.log(o[“a”]);
  • 键必须是字符串或者Symbol,如果不是字符串,则会隐式转换为字符串
对象的存储两种情况、
  • 一种存储数据,存储数据的叫做对象的属性
  • 一种存储函数, 存储函数的叫做对象的方法
  • 如果键是个变量,则不能使用点语法,需要使用中括号带入
var a=String.fromCharCode(102);//将ASCII码转换为字符  97~122就是小写字母a~z
  • 删除属性(如果属性不存在,则也不会报错

    • delete o.c;
  • 对象存储的内容相互之间是独立,无关联的

  • 如果需要对象中查找是否有某个键(“a” in o);

  • 如果需要在对象中查找是否有某个值,只能通过for in遍历

  • for (var prop in o)if(o[prop] === 3)console.log(prop,o.[prop])

  • 如果需要根据某个属性,查找对应的值,速度非常快,删除和添加也非常快

  • 对象存储及调用关系,堆和栈
    在这里插入图片描述

  • 对象等于对象,只是赋值了引用地址,若其中一个后面修改,则两个都会被改

  • 浅复制
    在这里插入图片描述

  • 深复制 才可将一个对象的每个属性都复制,没有引用关系

垃圾回收机制
  • o=null,
    • 将栈中变量o设置为null,表示不再引用对象,然后将对重这个对象的引用列表清除
    • 如果一个对象被多个变量引用,只有将引用该变量的所有对象设置为null,才会被垃圾回收
    • 只有存储引用地址的变量才需要设置null,来做垃圾标识
  • 内存泄漏:大量的不使用的引用对象,没有被标识为null,并且还在不断的生成和丢弃,则会造成内存泄漏
函数
  • 函数的结构形态
    • function 定义函数
    • fns 函数名,任意,与变量起名方式相同,函数名也是变量
    • (a,b) 可以向函数中注入的数据,a,b是参数,注入几个数据,就要声明几个参数{}就是函数执行的语句块
    • arguments 所有通过执行函数时传入的参数的列表
    • return 跳出当前函数,不再执行return以后的语句,并且返回一个数据,return 10;
  • fns(4,5);执行函数
    • ()标识执行函数,fns是被执行的函数名,执行函数就是将函数中的语句块全部执行
    • 4,5 标识的是传参,完全按照参数的顺序赋值
    • 当函数执行完成后,如果使用return返回一个值,将会把返回的值赋值给a
    • 如果函数中没有return,或者直接return没有返回数据,则返回undefined;
函数创建方式
  • 命名函数法
    *
function fn1(){};
ES6 类中函数创建
class box{
    fn(){}
    };
  • 函数的调用:可以在当前函数所在的script标签的任意位置或者当前函数所在script标签后面的任意script标签中执行

  • console.dir(fn1);以对象类型表现出来

  • 函数被存在堆中,在创建script标签是,将函数存储于堆中,并且栈中以函数名做引用

  • 若声明一个变量并赋值与函数名同名,则函数被覆盖,无法找到

  • 若仅定义没有赋值,名称与函数名相同,函数不会被覆盖

  • 匿名函数法

var fn1=function(){};
  • 匿名函数 自执行函数,只能执行一次
~function(){
};
+function(){
};
  • 匿名函数不会在初始化是被定义在栈中,会被运行时定义给变量

  • 运行到赋值这段代码时候,才将函数赋值给变量,意味这函数在赋值之前不能调用

  • 构造函数法
    *在这里插入图片描述

  • 缺点:在调用是,浏览器会将这个函数对象内的所有内容转换为代码,这需要消耗大量

  • 优点:可以动态生成函数

  • var JSON.stringify(对象);将对象转换为JSON格式字符串

    • json是一种字符串格式{}中属性名是用双引号引起来的
    • JSON.parse(json格式的字符串)将json格式的字符串转换为对象(将来用来发送给服务器用)
  • 深复制:先将对象转换成JSON字符串,字符串是非引用关系,然后再转换成对象,自动生成新的对象

    • JSON字符串在转换时会丢弃对象中的方法
var o=JSON. parse(JSON. stringify(obj));
obj.a=10;
obj.e. f=100;
console.1og(o);
作用域
  • 函数外使用var定义的变量都是全局变量
  • 在任何位置都可以调用全局变量
  • 当我们在函数内使用var定义的变量都是局部变量,就是函数内的局部变量,只能在函数内调用,不能在函数外或者别的函数中调用
  • 局部变量在函数执行完成后会销毁局部变量
  • 同名函数,只要在函数内任何位置定义了局部变量(使用var 在函数内定义变量),同名全局变量无法进入该函数,在函数内定义局部变量之前调用局部变量,则为undefined
    • 若没用var,则为声明全局变量
  • 局部变量在函数内的优先级高于全局变量,可认为同名变量为变量提升
  • 全局变量是建立在window中,所以可以通过window调用
    *]
  • 参数是局部变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值