JavaScript基础--带你走入js(四)

133 阅读3分钟

函数简介

  • 函数也叫方法,封装代码,实现高度复用
  • function关键字 加()调用 调用的参数叫做实参,定义函数中的参数为形参
  • 形参相当于隐式声明一个变量,承接实参,一一对应
  • 无返回值函数,返回值就是undefined 有返回值函数

函数的分类以及定义方式

**可以作为参数传递**
`
    funtion sum (sum) {
        sum = 'haha'
        console.log(sum)
    }
    sum(sum)
    sum(sum)
`
**可以作为事件处理函数**
**可以作为返回值**
  • 有名函数

    定义函数名的方式 function name () {}

    函数表达式的方式 var name = function () {} 调用在声明之后

  • 匿名函数

    函数自调用 (function(){})(); 只能调用一次

对象存储方式

  • 简单数据类型:
    • 值类型:number string boolean
    • 空类型:null undefined
  • 复杂数据类型:
    • 引用类型:object

创建对象

  • new Object()
    var obj = new Object()
    obj.name = xiaoming
    obj.age = 11
    obj.sing = function (){}
    
    工厂模式
    function creatPerson (name,age,sing){
        var obj = new Object()
        obj.name = name
        obj.age = age
        obj.sing = sing
        return obj
    }
    
    
  • 构建函数创建对象(相当于创建一种类型class)
    • 在内存中开辟空间
    • this指向当前实例对象
    • 动态添加属性和方法
    • 将当前对象从构造函数中返回出去 (不需要return)
     function Person (name,age,sing){
          this.name = name
          this.age = age
          this.sing = sing
     }
     var temp = new Person(xiaoming,11)
     var temp = new Person(xiaoming1,11)
    

作用域

就是变量的访问区域

  • 预解析:js会预先将带var定义的变量将 声明 提升到全局作用域的顶端

  • 全局对象:浏览器顶级对象window

  • 全局作用域:直接编写在 script 标签之中的JS代码,都是全局作用域;

  • 全局变量:在全局作用域下定义的方法和变量都是window下边的属性或者方法

       定义方式:var xxx = xxx 会进行预解析
               不带var  不建议
    
  • 函数作用域:在函数体中声明的带var变量,外界是无法访问的,在函数体内会优先访问。就是函数的私有变量。也就是函数作用域的局部变量。

    • 在函数作用域中访问一个变量时,先从当前函数作用域中找带var声明的变量,没有,就去全局作用域中找
    • 在函数作用域中,var声明的变量会将声明提升到函数作用域的顶端。
    • 在函数作用域中不带var的变量一定是全局变量
    • 函数中的形式参数相当于隐式声明
  • 定义函数名的方式定义的函数会将声明提升到全局作用域的顶端,所以可以先调用在定义
  • 函数表达式的方式定义的函数相当于变量提升,所以只能先定义,后调用
var a = 'haha'
function a () {
    console.log(1)
}
a()

面向对象思想

  • 万物皆对象
  • 每个是事物都是对象,根据这个对象的特征(属性)和行为(函数或者方法)抽象出一类群体。再通过这类群体实例化到具体的某一对象。这个抽象和实例化的过程就是面向对象思想。
  • 面向过程:注重过程
  • 面向对象: 注重结果

原型对象

实例对象中的隐式原型指向构造函数的显示原型 原型对象中的的构造器指向的是构造函数

原型链:实例对象在访问属性或方法时,先从自身构造函数中找,没有,就去原型对象中找,没有,上一层的原型对象中去找,一直找到Object原型对象中。没有,就报错!

instanceof 判断是否是谁的实例