Java Script 基础三

五、对象 Object

    1、JavaScript 中的对象可以简单的理解成"名称-值"对,与其类似的类型

    • Python 中的字典(Dictionary)
    • Perl 和 Ruby 中的散列/哈希(Hash)
    • C/C++ 中的散列表(Hash table)
    • Java 中的散列映射表(HashMap)
    • PHP 中的关联数组(Associative array)

    “名称”部分是一个 JavaScript 字符串,“值”部分可以是任何 JavaScript 的数据类型——包括对象。

// 创建对象的两种方式
var obj = new Object();
var obj = {};                 // 对象字面量法

    2、对象的链式取值

obj.first.second;
obj["first"]["second"];

        这两种方法在语义上也是相同的。

        第二种方法的优点在于属性的名称被看作一个字符串,这样的话,可以在[]中添加变量来进行取值。它也可以被用来访问某些以预留关键字作为名称的属性的值。

六、数组

    常用的api

        arr.toStirng()                                       返回一个字符串,包含数组中所有元素,逗号分割

        arr.toLocalString()                               根据宿主环境的区域设置,返回一个包含数组中所有元素的字符串,每个元素通过逗号分隔。

        arr.concat(item1[, item2[, ... [, itemN]]])  返回一个新的数组,包含arr和item中的所有元素

        arr.join(sep)                                        返回一个包含数组中所有元素的字符串,每个元素通过指定的 sep 符号分隔。

        arr.pop()                                             删除并返回数组中最后一个元素, 会影响到原数组

        arr.push(item1, ..., item)                        将item1、item2....、itemN 追加到数组 arr 中, 会影响到原数组

        arr.reverse()                                        数组逆序, 逆序数组中的每一个元素,元素内容不会改变,会影响原数组

        arr.shift()                                            删除并返回数组第一个元素,会影响原数组

        arr.slice()                                            返回子数组,以 a[start] 开头,以 a[end] 前一个元素结尾。

        arr.sort([cmpfn])                                  对数组进行排序,默认顺序是字符顺序。compfn是一个function(a, b),用来自定义排序。会影响原数组

        a.splice(start, delcount[, item1[, ...[, itemN]]])    从 start 开始,删除 delcount 个元素,然后插入所有的 item返回值是被删除的数组,该API会影响原数组

        a.unshift(item1[, item2[, ...[, itemN]]])      将 item 插入数组头部,返回数组新长度(考虑 undefined)

七、函数

    1、函数的定义

        * 用 function 定义函数

            函数可以通过声明定义,也可以是一个表达式

// 函数声明
function sum(a, b) {
    return a+b;
}

sum(1,2) // 3


//函数表达式
var sum = function(a, b) {
    return a+b;
}

sum(1,4) // 5

        * 用 Function 构造函数定义

var myFun = new Function("a", "b", "c", "return (a+b)*c")

myFun(1,2,3); // 9

    2、函数的调用

         函数的调用方式主要这么4种: 

            1、作为一个函数调用

            2、作为一个对象的方法进行调用

            3、使用构造函数进行调用

            4、使用函数方法进行调用 ( apply()、call() )

// 1、作为一个函数调用
function sum() {
    let a = arguments[0]
    let b = arguments[1]
    return a+b;
}
sum(1,6) // 7

// 2、作为一个对象的方法进行调用
var myObj = {
    firstName:"Hunter",
    lastName: "Liu",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObj.fullName() // Hunter Liu

// 3、使用构造函数进行调用
function fullNameF(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
 
// This    creates a new object
var x = new fullNameF("Hunter","Liu");
x.firstName; // HUnter

// 4、使用函数方法进行调用 ( apply()、call() )
function myFunction(a, b) {
    return a * b;
}
myObject = myFunction.call(myObject, 10, 2); // 20
myObject = myFunction.apply(myObject,[10, 2]);  // 20

    apply() 和 call() 的

        共同点:是第一个参数都是对象本身,因为需要获取第一个参数的作用域,也就是让第一个参数作为函数调用方法的 this

        不同点:apply()第二个参数是一个数组,也就是将被调用函数的所有的参数都放在这个数组中,传入函数。

                    call() 的参数则是依次填入的,从第二个参数开始就是被调用函数的参数。

原文地址:https://www.cnblogs.com/Lyh1997/p/14171541.html