JavaScript:对象

简介

对象只是一种特殊的数据。对象拥有属性和方法。JavaScript中所有事物都是对象。

创建对象

  • 定义并创建对象的实例
var person = new Object();
person.name = "Carson";
person.age = 18;
  • 使用构造器定义对象,然后创建新的对象实例
function student(name, age) {
    this.name = name;
    this.age = age;
}

var someStudent = student("John", 15);

对象方法

方法只不过是附加在对象上的函数。在构造器函数内部定义对象的方法:

function student(name, age) {
    this.name = name;
    this.age = age;

    this.changeName = changeName;
    function changeName(newName) {
        this.name = newName;
    }
}

someStudent = new student("John", 15);
someStudent.changeName("Jay");
console.log(someStudent);

打印结果:

student {name: "Jay", age: 15, changeName: ƒ}

遍历对象的属性

var x;
var text = "";
for (x in person) {
    text = text + someStudent[x];
}
console.log(text);

打印结果:

Jay15

内建对象

Number

JavaScript不是类型语言,只有一种数字类型。所有JavaScript数字均为64位。

精度
  • 整数
    最多为15位(不使用小数点或指数计数法)。
var x = 999999999999999;   // x 为 999999999999999
var y = 9999999999999999;  // y 为 10000000000000000
  • 浮点数
    最大位数是17,但是浮点运算并不总是100%准确:
var x = 0.2 + 0.1; // 输出结果为 0.30000000000000004
  • 八进制和十六进制
    如果前缀为0,则JavaScript会把数值常量解释为八进制数,如果前缀为0x,则解释为十六进制数。
var x = 0377;   // 8进制
var y = 0xFF;   // 16进制
方法
var myNumber = 128;

myNumber.toString();     // 返回 128
myNumber.toString(16);   // 返回 80
myNumber.toString(8);    // 返回 200
myNumber.toString(2);    // 返回 10000000
无穷大

当数字运算结果超过了JavaScript所能表示的数字上限,结果为一个特殊的无穷大infinity值。同样地,当负数的值超过了JavaScript所能表示的负数范围,结果为负无穷大-Infinity

var x = 2/0;    // infinity
var y = -2/0;   // -Infinity
非数字值

NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把Number对象设置为该值,来指示其不是数字值。
使用isNaN()全局函数来判断一个值是否是NaN值。

var x = 1000 / "Apple";
isNaN(x);   // 返回 true
var y = 100 / "1000";
isNaN(y);   // 返回 false,数字除以一个字符串数字结果是一个数字
数字和Number对象
var x = 123;
var y = new Number(123);
typeof(x)   // 返回 Number
typeof(y)   // 返回 Object

String

一个字符串可以使用单引号或双引号:

var str = "hello world";
var str2 = 'hello world';
长度
str.length  // 长度11 
查找字符串
var str = "Hello world, welcome to the universe.";
var index = str.indexOf("welcome");     // 第一次匹配下标 13
var lastIndex = str.lastIndexOf("o");   // 最后一次匹配下标 22
内容匹配
var str = "hello world";
console.log(str.match("world"));    // index: 6
console.log(str.match("world!"));   // null
替换内容
var str = "hello world";
str.replace("world", "JavaScript");
字符串转为数组
var str = "hello world";
var arr = str.split(" ");   // ["hello", "world"]
特殊字符
代码输出
\''
\""
\\\
\n换行
\r回车
\ttab
\b空格
\f换页
字符串属性
length      // 长度
prototype   // 修改属性
constructor // 构造器
字符串方法
// 通过下标返回字符串
charAt(pos: number): string;    
// 通过下标返回Unicode值   
charCodeAt(index: number): number;  
// 连接两个或多个字符串,返回连接后的字符串
concat(...strings: string[]): string;
// 返回字符串中检索指定字符第一次出现的位置
indexOf(searchString: string, position?: number): number;
// 返回字符串中检索指定字符最后一次出现的位置
lastIndexOf(searchString: string, position?: number): number;
// 用本地特定的顺序来比较两个字符串
localeCompare(that: string): number;
// 找到一个或多个正则表达式的匹配
match(regexp: string | RegExp): RegExpMatchArray | null;
// 替换与正则表达式匹配的子串
replace(searchValue: string | RegExp, replaceValue: string): string;
// 检索与正则表达式相匹配的值
search(regexp: string | RegExp): number;
// 提取字符串的片断,并在新的字符串中返回被提取的部分
slice(start?: number, end?: number): string;
// 把字符串分割为子字符串数组
split(separator: string | RegExp, limit?: number): string[];
// 从起始索引号提取字符串中指定数目的字符
substr(from: number, length?: number): string;
// 提取字符串中两个指定的索引号之间的字符
substring(start: number, end?: number): string;
// 把字符串转换为小写
toLowerCase(): string;
// 根据主机的语言环境把字符串转换为小写
toLocaleLowerCase(): string;
// 把字符串转换为大写
toUpperCase(): string;
// 根据主机的语言环境把字符串转换为大写
toLocaleUpperCase(): string;
// 移除字符串首尾空白
trim(): string;
// 返回某个字符串对象的原始值
valueOf(): string;

Date
创建日期
new Date() // 当前日期和时间
new Date(milliseconds) //返回从 1970 年 1 月 1 日至今的毫秒数
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
设置日期
var myDate = new Date();
myDate.setFullYear(2018,0,14); // 2018 年 1 月 14 日
myDate.setDate(myDate.getDate()+5); // 2018 年 1 月 19 日
日期比较
var date = new Date();
date.setFullYear(2100,0,14);
var today = new Date();

if (x>today) {
    alert("今天是2100年1月14日之前");
}
else {
    alert("今天是2100年1月14日之后");
}

Array
创建数组
  • 常规方式
var numbers = new Array(); 
numbers[0] = 1;       
numbers[1] = 2;
numbers[2] = 3;
  • 简洁方式
var numbers = new Array(1, 2, 3);
  • 字面
var numbers = [1, 2, 3];
数组方法
var value = numbers[0]; // 1
numbers[0] = 0;         // 0
  • 获取内容个数
var length = numbers.length; // 3
  • 获取下标
var index = numbers.indexOf(2); // 1
  • 转换字符串
var str = numbers.join(); // 0,2,3
  • 删除最后一个
numbers.pop(); // [0, 2]
  • 删除第一个
numbers.shift(); // [2]
  • 追加
numbers.push(3); // [2, 3];
  • 插入
// 参数一:插入的位置 
// 参数二:删除的位置 
// 参数三:插入的值
numbers.splice(0, 0, 1); // [1, 2, 3]
  • 第一个位置添加
numbers.unshift(0); // [0, 1, 2, 3]
  • 取出子数组
// start: 0, end: 2, 不包含2
var slice = numbers.slice(0, 2); // [0, 1]
  • 倒序排列
numbers.reverse(); // [3, 2, 1, 0]
  • 排序
// 按字母顺序
var newNumbers = numbers.sort();
// 按数字升序
var newNumbers = numbers.sort(function (a, b) {return a-b});
// 按数字降序
var newNumbers = numbers.sort(function (a, b) {return b-a});
创建新方法
Array.prototype.myUcase = function(){
    for (i = 0; i<this.length; i++){
        this[I] = this[i].toUpperCase();
    }
}

Boolean
var reslut = new Boolean();     // false
result = true;                  // true

Math

算数对象的作用是:执行常见的算数任务Math对象无需在使用这个对象之前对它进行定义。

// 四舍五入
Math.round(2.5)                 // 结果 3
// 取0-1随机值
Math.random()                   // 结果为浮点
// 取随机整数
Math.floor(Math.random()*255)   // 结果为整数 0-255
// 取最大值
Math.max(5,10)                  // 结果 10
// 取最小值
Math.min(5,10)                  // 结果 5
// 圆周率
Math.PI                         // 结果 3.141592653589793
// 取绝对值
Math.abs(-5)                    // 结果 5
// 取整
Math.ceil(0.3)                  // 结果 1
// 开方
Math.sqrt(16)                   // 结果 4

RegExp

当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;
修饰符
  • i 修饰符是用来执行不区分大小写的匹配。
  • g 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。
var patt = /hello/i;
方法

test()方法搜索字符串指定的值,根据结果并返回真或假。

var patt = new RegExp("e");
patt.test("The best things in life are free");  // true

exec()方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

var patt = new RegExp("e");
patt.exec("The best things in life are free");  // e index: 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值