javaScript基础总结---对象、函数及语句分号

目录

一、对象

1.对象的概念

① 什么是对象?

② 为什么要用对象?

③ 对象的组成

2.如何访问对象内部数据? 

3.什么时候必须使用['属性名']的方式? 

二、函数

1.函数的概念

① 什么是函数

② 为什么要用函数?

③ 如何定义函数?

2.如何调用(执行)函数 

3.回调函数 

① 什么函数才是回调函数?

② 常见的回调函数?

4.IIFE (自调用函数) 

5.函数中的this 

① this是什么?

② 如何确定this的值?

③ 代码举例详解

三、关于语句分号


一、对象

1.对象的概念

① 什么是对象?

  • 多个数据的封装体
  • 用来保存多个数据的容器
  • 一个对象代表现实中的一个事物

② 为什么要用对象?

  • 统一管理多个数据

③ 对象的组成

  • 属性: 属性名(字符串)和属性值(任意)组成
  • 方法: 一种特别的属性(属性值是函数)

2.如何访问对象内部数据? 

  • .属性名: 编码简单, 有时不能用
  • ['属性名']: 编码麻烦, 能通用

3.什么时候必须使用['属性名']的方式? 

属性名包含特殊字符: - 空格

 var p = {}
 //1. 给p对象添加一个属性: content type: text/json
 // p.content-type = 'text/json' //不能用
 p['content-type'] = 'text/json'
 console.log(p['content-type'])

二、函数

1.函数的概念

① 什么是函数

  • 实现特定功能的n条语句的封装体
  • 只有函数是可以执行的, 其它类型的数据不能执行

② 为什么要用函数?

  • 提高代码复用
  • 便于阅读交流

③ 如何定义函数?

  • 函数声明

  • 表达式

      function fn1 () { console.log('fn1()' )//函数声明
                       
      const fn2 = ()=> console.log('fn2()')  //表达式

2.如何调用(执行)函数 

  1. test(): 直接调用

  2. obj.test(): 通过对象调用

  3. new test(): new调用

  4. test.call/apply(obj): 临时让test成为obj的方法进行调用

  5. 代码示例
      var obj = {}
      //此处不能使用箭头函数,因为箭头函数会改变this指向
      function test2 () {
        this.xxx = 'hongjilin'
      }
      // obj.test2()  不能直接, 根本就没有
      test2.call(obj)  // 可以让一个函数成为指定任意对象的方法进行调用
      console.log(obj.xxx)

3.回调函数 

① 什么函数才是回调函数?

  • 你定义的
  • 你没有调
  • 但最终它执行了(在某个时刻或某个条件下)

② 常见的回调函数?

  • dom事件回调函数 ==>发生事件的dom元素 (与用户交互)
  • 定时器回调函数 ===>window
  • ajax请求回调函数(后面讲)  (与后台交互)
  • 生命周期回调函数(后面讲)
      // dom事件回调函数
     document.getElementById('btn').onclick = function () {alert(this.innerHTML)}
     // 定时器回调函数
     setTimeout(function () {   alert('到点了'+this)}, 2000)

4.IIFE (自调用函数) 

1.全称: Immediately-Invoked Function Expression 自调用函数

2.作用:  

  • 你定义的
  • 你没有调
  • 但最终它执行了(在某个时刻或某个条件下)

3.代码示例:     

<body>
    <!-- 1.什么函数才是回调函数?
    你定义的
    你没有调
    但最终它执行了(在某个时刻或某个条件下)
    
    2.常见的回调函数?
    dom事件回调函数 ==>发生事件的dom元素   (与用户交互)
    定时器回调函数 ===>window

    ajax请求回调函数(后面讲)    (与后台交互)
    生命周期回调函数(后面讲)   -->


    <button id="btn">点我弹出</button>

    <script>
       document.getElementById('btn').onclick = function (){  //dom事件回调函数
        alert (this.innerHTML)
       }

       setTimeout(function(){   //定时器回调函数
        alert('到点了')
       },2000)
    </script>
</body>

5.函数中的this 

① this是什么?

  • 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
  • 所有函数内部都有一个变量this
  • 它的值是调用函数的当前对象

② 如何确定this的值?

  • test(): window
  • p.test(): p
  • new test(): 新创建的对象
  • p.call(obj): obj

③ 代码举例详解

 function Person(color) {
   console.log(this)
   this.color = color;
   this.getColor = function () {
     console.log(this)
     return this.color;
   };
   this.setColor = function (color) {
     console.log(this)
     this.color = color;
   };
 }

 Person("red"); //this是谁? window

 const p = new Person("yello"); //this是谁? p

 p.getColor(); //this是谁? p

 const obj = {};
 //调用call会改变this指向-->让我的p函数成为`obj`的临时方法进行调用
 p.setColor.call(obj, "black"); //this是谁? obj

 const test = p.setColor;
 test(); //this是谁? window  -->因为直接调用了

 function fun1() {
   function fun2() {  console.log(this); }
   fun2(); //this是谁? window
 }
fun1();//调用fun1

三、关于语句分号

1.js一条语句的后面可以不加分号

2.是否加分号是编码风格问题, 没有应该不应该,只有你自己喜欢不喜欢

3.在下面2种情况下不加分号会有问题

  • 小括号开头的前一条语句
  • 中方括号开头的前一条语句

4.解决办法: 在行首加分号

5.强有力的例子: vue.js库

6.知乎热议: https://www.zhihu.com/question/20298345

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值