javascript基础加固5—-对象

Posted 长风破浪举火烧天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript基础加固5—-对象相关的知识,希望对你有一定的参考价值。

2.1 什么是对象

javascript 的所有数据都可以被视为对象,而每个对象都有其 属性(properties)和 方法(methods)。

对象的 属性 是反映该对象某些特定的性质的,例如:字符串的长度、图像的长宽、文字框(Textbox)里的文字等;

对象的 方法 能对该对象做一些事情,例如,表单的“提交”(Submit),窗口的“滚动”(Scrolling)等。

比如当申请一个变量的时候:

var my_var="shiyanlou";

其实也就是创建了一个 字符串对象 ,这个对象拥有内建的属性 my_var.length = 9

同时,这个字符串对象还有数个内建的方法,比如 my_var.toUpperCase() 方法可以将字符转为大写;my_var.charAt(n) 方法可以返回第 n 个字符。

2.2 创建对象

JavaScript 提供了一些常用的内置对象(稍后介绍),但是有些情况下我们需要自定义地创建对象,以达到特殊的、丰富的功能。

比如我们创建一个“student”对象,并为其指定几个 属性 和 方法:

student = new Object();  // 创建对象“student”

student.name = "Tom";   // 对象属性 名字
student.age  = "19";    // 对象属性 年龄

student.study =function() {   // 对象方法 学习
    alert("studying");
};

student.eat =function() {     // 对象方法 吃
    alert("eating");
};

采用函数的方式新建对象:

function student(name,age) {

    this.name = name;
    this.age = age;

    this.study = function() {
        alert("studying");
    };

    this.eat = function() {
        alert("eating");
    }
}

然后通过 new 创建 student 对象的实例:

var student1 = new student(‘Tom‘,‘19‘);

var student2 = new student(‘Jack‘,‘20‘);

2.3 访问对象的属性和方法

对象的存在意义,就是为了方便地操作数据,我们可以很容易地访问对象的属性或调用对象的方法,通过符号“.”。

比如我们刚才新建的 student1 对象,可以这样使用:

<script>
var x = student1.name;  // 访问对象的属性
var y = student1.age;

document.write(x);
document.write(y);

student1.study();     // 调用对象的方法
</script>

当我们需要 反复访问 某对象的时候,可以使用 with 语句简化操作,而不需要反复地用“.”符号,比如:

with(student1) {
var x = name;
var y= age;
study();
eat();
}

2.4 常用内置对象

JavaScript 为我们提供了一些非常有用的常用内置对象,这样我们就不用每次自己编代码来实现一些常用功能。

现在我们举例介绍 String、Math、Array 三中常用对象及其属性和方法。

2.4.1 String 字符串对象

一开始就举例介绍过 String 对象,每当创建一个字符串变量的时候,也就相当于创建了一个 String 对象。

(1)String 的属性

该对象只有一个属性,即 length,表示字符串中的字符个数,包括所有的空格和符号:

var test_var = "I love You!";
document.write(test_var.length);

显示结果是“11”因为字符串长度将符号和空格也计算在内:

技术分享图片

 

(2)String 的方法

String 对象共有 19 个内置方法,主要包括字符串在页面中的显示、字体大小、字体颜色、字符的搜索以及字符的大小写转换等功能,下面是一些常用的:

  • charAt(n) :返回该字符串第 n 位的单个字符。(从 0 开始计数)

  • charCodeAt(n) :返回该字符串第 n 位的单个字符的 ASCII 码。

  • indexOf() :用法:string_1.indexOf(string_2,n); 从字符串 string_1 的第 n 位开始搜索,查找 string_2,返回查找到的位置,如果未找到,则返回 -1,其中 n 可以不填,默认从第 0 位开始查找。

  • lastIndexOf() :跟 indexOf() 相似,不过是从后边开始找。

  • split(‘分隔符‘) :将字符串按照指定的分隔符分离开,返回一个数组,例如:‘1&2&345&678‘.split(‘&‘);返回数组:1,2,345,678。

  • substring(n,m) :返回原字符串从 n 位置到 m 位置的子串。

  • substr(n,x) :返回原字符串从 n 位置开始,长度为 x 的子串。

  • toLowerCase() :返回把原字符串所有大写字母都变成小写的字符串。

  • toUpperCase() :返回把原字符串所有小写字母都变成大写的字符串。

2.4.2 Math 对象

“数学”对象,提供对数据的数学计算。

(1)Math 的属性

Math 的几个属性,是数学上几个常用的值:

  • E :返回常数 e (2.718281828...)。

  • LN2 :返回 2 的自然对数 (ln 2)。

  • LN10 :返回 10 的自然对数 (ln 10)。

  • LOG2E :返回以 2 为底的 e 的对数 (log2e)。

  • LOG10E :返回以 10 为底的 e 的对数 (log10e)。

  • PI :返回π(3.1415926535...)。

  • SQRT1_2 :返回 1/2 的平方根。

  • SQRT2 :返回 2 的平方根。

(2)Math 的方法

Math 的内置方法,是一些数学上常用的数学运算:

  • abs(x) :返回 x 的绝对值。
  • round(x) :返回 x 四舍五入后的值。
  • sqrt(x) :返回 x 的平方根。

  • ceil(x) :返回大于等于 x 的最小整数。
  • floor(x) :返回小于等于 x 的最大整数。

  • sin(x) :返回 x 的正弦。
  • cos(x) :返回 x 的余弦。
  • tan(x) :返回 x 的正切。
  • acos(x) :返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示。
  • asin(x) :返回 x 的反正弦值。
  • atan(x) :返回 x 的反正切值。

  • exp(x) :返回 e 的 x 次幂 (e^x)。
  • pow(n, m) :返回 n 的 m 次幂 (nm)。
  • log(x) :返回 x 的自然对数 (ln x)。

  • max(a, b) :返回 a, b 中较大的数。
  • min(a, b) :返回 a, b 中较小的数。
  • random() :返回大于 0 小于 1 的一个随机数。

2.4.3 Array 数组对象

数组对象是对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置(从 0 开始计数)。

数组下标表示方法是用方括号括起来,比如:

myArray[2]="hello"

注意:JavaScript只有一维数组,要使用多维数组,请用这种虚拟法:

var myArray = new Array(new Array(), new Array(), new Array(), ...);

其实这是一个一维数组,里边的每一个元素又是一个数组。调用这个“二维数组”的元素时:

myArray[2][3] = ...;
(1)Array 的属性

length :返回数组的长度,即数组里有多少个元素。它等于数组里最后一个元素的下标加一。

因此,想添加一个元素,只需要:

myArray[myArray.length] = ...;

####(2)Array 的方法

- join("指定分隔符") :返回一个字符串,把数组元素串起来,元素间用指定分隔符隔开。

- toString() :把数组转为字符串,并返回结果。

- reverse() :使数组元素倒序。

- slice(n,m) :返回子数组,从数组第 n 个元素到第 m 个元素。

- sort(SortFunction) :按照指定的 SortFunction 将数组的元素排序。

- concat(Array\_1,Array\_2) :用于连接两个或多个数组。

 

以上是关于javascript基础加固5—-对象的主要内容,如果未能解决你的问题,请参考以下文章

javascript基础加固3—-语法2

javascript基础加固4—-事件

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

javascript基础加固2—-语法1

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象