【JavaScript学习 1-3】自定义对象、内置对象、JSON

本文介绍了JavaScript的面向对象特性,包括封装性、继承性和多态性,并通过示例展示了多态性的直观体现。同时,详细讲解了如何定义和访问对象,包括字面量法、构造函数法以及使用Object对象自定义对象。此外,还提到了JavaScript的一些内置对象,如String、Number、Math和Date对象的常用属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript同Java一样,也具有面向对象的特征。
面向对象的特征有封装性,继承性,和多态性

有关多态性的直观体现之一:

var obj = 123;
console.log(obj.toString()); // 输出结果:123

obj = [1,2,3];
console.log(obj.toString()); // 输出结果:1,2,3

obj = function(){};
console.log(obj.toString()); // 输出结果:function(){}


自定义对象(字面量法)

定义
语法:对象的定义是通过“{}”语法实现的。
组成:对象以对象成员(属性和方法)构成,多个成员之间使用逗号分隔。
成员:对象的成员以键值对的形式存放在{}中。

建议先看这个,再看上面三行定义:

以下定义了四个对象:(空对象也是对象)

var o1 = {};
var o3 = {name:'Jim',age:19,gender:'男'};
var o2 = {name:'Jim'};
var o4 = {
    name:'Jim',
    age:19,
    gender:'男',
    sayHello:function(){console.log('你好');}
};

访问对象的成员

对象[变量名]=值;

var o6 = {}; // 创建一个空对象
var key = 'id'; // 通过变量保存要操作的属性名
o6[key] = 123; // 相当于“o6['id']=123”或“o6.id=123”

若该成员为方法(假设其名为say),则如此调用:

obj.say();
obj['say']();

成员对象的遍历

var obj = {name:'Tom',age:16};
for(var k in obj)
{
    console.log(k + ': '+ obj[k]);
}

判断对象是否存在

var obj = {name:'Tom',age:16};
console.log('name' in obj); // 输出结果:true
console.log('gender' in obj); // 输出结果:false

构造函数自定义对象

字面量法只可定义一个对象,当多个对象具有相同的特征(成员)时,使用字面量法会造成代码冗余,繁杂。构造函数法解决了这一问题。这种定义方法更像Java中常用的定义方法。

function Stu(id,name,stature,weigth)
{
    this.id = id;
    this.name = name;
    this.stature = stature;
    this.weigth = weigth;
    this.sayHobby = function(){document.writeln("看海豚");}
}

var stu0 = new Stu(001,"KujoJotaro",190,80);


注意:实例对象不能访问静态成员变量(啊?什么意思啊?)

(注意看下方对象中的id成员与其它成员的区别)

function Stu(id,name,stature,weigth)
{
    var id = id;
    this.name = name;
    this.stature = stature;
    this.weigth = weigth;
    this.sayHobby = function(){document.writeln("看海豚");}
}
            
var stu0 = new Stu(1,"KujoJotaro",190,80);

document.write(stu0.id);// 输出为undefined(未定义)

除了上面代码中不用this.而用var的方法定义静态成员外,还可使用如下方法定义(添加)静态成员:

Stu.class = 114514; // Stu就是上面代码中的Stu对象函数

使用Object对象自定义对象

var stu = new Object();
            
// 直接添加,不用声明
stu.name = "KujoJotaro";
stu.id = 114514;
stu.sayHobby = function(){document.write("喜欢海豚");}

当然,构造函数法与Object对象法创建的对象与字面量法创建的都是对象,访问方式没有差别。

内置对象

内置对象有String对象,Number对象,Math对象,Data对象等。

String对象

String对象中的成员有:

成员备注
length获取字符串的长度
charAt(index)获取index位置的字符,位置从0开始计算
indexOf(searchValue)获取searchValue在字符串中首次出现的位置,不存在则返回-1
lastIndexOf(searchValue)获取searchValue在字符串中最后出现的位置
substring([start,end])截取从start位置到end位置之间的一个子字符串
substr([start,length])截取从start位置开始到length长度的子字符串
toLowerCase()获取字符串的小写形式
toUpperCase()获取字符串的大写形式
split([separator,limit])使用separator分隔符将字符串分隔成数组,limit用于限制数量
replace(str1,str2)使用str2替换字符串中的str1,返回替换结果

Number对象

Number对象用于处理整数、浮点数等数值,常用的属性和方法如下:

var num = 12345.6789;
num.toFixed(); // 四舍五入,不包括小数部分,返回结果:12346
num.toFixed(1); // 四舍五入,保留1位小数,返回结果:12345.7
num.toFixed(6); // 用0填充不足的小数位,返回结果:12345.678900
Number.MAX_VALUE; // 获取最大值,返回结果:1.7976931348623157e+308
Number.MIN_VALUE; // 获取最小正值,返回结果:5e-324

Math对象

Math对象用于对数值进行数学运算,与其他对象不同的是,该对象不是一个构造函数,不需要实例化就能使用:

成员备注
PI获取圆周率,结果为3.141592653589793
abs(x)获取x的绝对值,可传入普通数值或是用字符串表示的数值
max(value1,value2,...)获取所有参数中的最大值
min(value1,value2,...)获取所有参数中的最小值
pow(base,exponent)获取基数(base)的指数(exponent)次幂,即base^exponent
sqrt(x)获取x的平方根
ceil(x)获取大于或等于x的最小整数,即向上取整
floor(x)获取小于或等于x的最大整数,即向下取整
round(x)获取x的四舍五入后的整数值
random()获取大于或等于0.0且小于1.0的随机值

其中random对象很有趣,举个例子,如想生成1~100间的数字,则:

document.write(Math.random() * 99 + 1);

Data对象

Date对象用于处理日期和时间。

示例1:根据Date对象获取时间日期。

var date = new Date();//基于当前时间创建Date对象
//结果长得类似这样:Fri Oct 06 2017 11:53:04 GMT+0800(中国标准时间)

date.toString(); // 转成字符串后可用Data对象的成员进行处理
date.getFullYear();//示例结果:2017
date.getMonth();//示例结果:9
date.getDate();//示例结果:6

示例2:根据Date对象指定一个日期。

//方式1:分别传入年、月、日、时、分、秒(月的范围是0~11,即真实月份-1)
var date1 = newDate(2017,9,1,11,53,4);
date1.toString();//返回结果:SunOct01201711:53:04GMT+0800(中国标准时间)

//方式2:通过字符串传入日期和时间
var date2 = newDate('2017-10-0111:53:04');
date2.toString();//返回结果:SunOct01201711:53:04GMT+0800(中国标准时间)

Data对象的成员有:
(太多了不想写,参考这篇👇)

Date - JavaScript | MDNicon-default.png?t=N4P3https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

 JSON

JSON 全称为JavaScript Object Notation(JavaScript 对象表示法)
JSON不仅可以用来保存对象,还可以保存数字、字符串、数组等其他类型的数据。
格式如下:

{"name":"Tom","age":24,"work":true,"arr":[1,2]}


或者

[{"name":"Tom","age":24},{"name":"Jim","age":25}]


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值