JavaScript中的 对象与函数

在这里插入图片描述

对象(Object)

什么是对象?

多个数据的封装体,用于保存多个数据的容器,一个对象代表现实中的一个事物。
例如:一个人,他有头,有眼睛,有鼻子,有手,有脚,有行为(走路),那么我们把这个人进行抽象到编程中,这个就叫做 “对象” 。

var person = {name:"juz", age:24, add:"shenzhen", gender: "boy",
      xingwei:function(){
            // 行为
      }
  }
    console.log(person);
// 以上代码,将一个人进行抽象化,person代表一个人, 这个人有name, age, gebder, 以及行为方法,行为是一个函数

为什么要用对象?

统一管理多个属性

对象的组成(属性与方法):

对象的属性: 代表现实事物的状态数据,对象的属性是由属性名和属性值组成,本质上属性名和属性值都是字符串类型

对象的方法: 代表现实事物中的行为数据,一种特别的属性(它的属性值是函数)

var obj = {name:"zhangsan", tezheng : function(){函数执行体}}    
// tezheng : 后面的函数就是对象的方法

如何访问对象内部的数据?

对象 . 属性名: 编码简单,但是有时不能用,例如:- , 空格 等其他特殊字符时

对象[“属性名”]: 当属性名包含特使字符: – 空格 变量名不确定时,才用 [“属性名”] 这种方法,优点是任何情况下都可以使用

var p = {
    name:"tom",
    age:23,
    setName : function(new_name){
        this.new_name = new_name;
        console.log(this.new_name);
    },
    setAge : function(new_age){
        this.new_age = new_age;
        console.log(this.new_age);
    }
};
 
p.setName("zhangsan");  //调用p.setName对象的方法
p.setAge(30);           //调用p.setAge对象的方法
 
console.log(p.name);
console.log(p.age);
console.log(p.setName); 
 
// 输出了函数的定义     ƒ (new_name){
                               this.new_name = new_name;                                                    
                               console.log(this.new_name);
                        }

对象的语法:

字面量对象:Var obj = {属性名:属性值,属性名:属性值,……};

构造对象:var obj = new Object(); obj . 属性名 = 属性值

.
.

函数(function)

什么是函数?

实现特点功能的n条语句的封装体,他可以反复被调用,只有函数是可以执行的其他类型的数据都是不可以执行的。

为什么要用函数 ?

可以提高代码复用,因为它可以反复被调用,便于阅读 ,它可以执行一整块功能的封装体,这个功能是其他数据类型所不具备的。

函数的实参与形参的本质

形参的本质就是个变量,还是个局部变量,而实参就是变量值

如何定义函数 (语法)

函数声明,函数表达式

// 函数声明
     function fun(){                        
         console.log("hello world");       
     }
// 函数表达式
     var show = function(){
         console.log("hello world")
     }

如何调用执行函数?
test() :直接调用, obj.fun():通过对象调用, new fun():new调用, fun.call / apply (obj):可以让一个函数成为指定任意对象的方法,进行调用。

解释一下什么是: 可以让一个函数成为指定任意对象的方法,进行调用。

apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法

call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法

var obj = {};
    function fun(){
        this.new_obj = "hello world";
    }
    fun.call(obj);
    console.log(obj.new_obj);
    // 输出结果为 : hello world 
    // 我们可以看到,本身 obj这个对象,是没有任何的属性值的,但是可以通过 .call 方法,把函数内的执行对象 .call 给对象,再通过对象进行调

回调函数

什么函数才是回调函数: 1,你定义的 2,你没有去调用它 3,但最终它在某个时刻或者条件执行了

常见的回调函数: DOM事件, 定时器回调函数, ajax 请求回调函数, 生命周期回调函数

document.getElementById("btn");
        btn.onclick = function(){
            alert("hello world");    //DOM事件,回调函数    
        }
    
    setTimeout(function(){
        alert("定时器回调函数");        // 定时器回调函数
    },2000);

IIFE立即执行调用函数(匿名函数)

函数必须要有函数方法名,没用方法名的函数必须要是一个整体才能执行,所以要用括号括起来,这就是匿名函数(立即执行函数)

匿名函数的特点就是一次性执行函数,在匿名函数内部的变量都是局部变量,不会污染到外部的全局变量,而且匿名函数执行了一次,立即释放内存

(function(){
        var a = 3;
        console.log(a + 3);
    })();    // 函数自调,调完即释放空间

this, 如何确定this的值:

谁来调用this,this的值就是谁,任何函数本质上都是通过某一个对象来调用的,如果没有直接指定就是 window

函数外的 this 就是 window,所有函数内部都有一个变量 this,它的值就是调用函数的当前对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值