ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

前端入门篇(三十九)JS基础6对象

2021-02-10 18:01:57  阅读:179  来源: 互联网

标签:console name 对象 JS 三十九 入门篇 person1 var 属性


对象的定义

一堆变量+一堆函数的集合

对象的创建

用直接量{}的方式创建:

var obj1 = {
    x: 60,
    y:70,
    z:function() {console.log('z func')}
}

1.x: 60是一个属性,x为属性名,60为属性值;
属性与属性之间以逗号隔开
2.属性名均为string,会被系统隐式地转为string类型
3.如果属性名是纯数字、纯字母、以字母开头的字母+数字,可以不写引号
4.如果属性名包含特殊字符(如空格,连接符’-’),就要加上引号(下划线可以不加引号,不会报错)

var person1 = {
    name:'xiaoming',
    age:18,
    sex:'male',
    slogan: function() {
        console.log('My name is xiaoming.')
    }
}

当要创建与person1小明类似的对象时,用直接量的方式创建有些冗余,可以改为用类的方式创建,将person都具备的结构抽象出来,用new的方式创建出对象,更方便简洁

用类的方式创建对象(new)

//构造方法
function personClass(pAge,pSex,pName) {
    this.name=pName || 'xiaoming';
    this.age=pAge;
    this.sex=pSex;
    this.slogan= function() {
        console.log('My name is ' + this.pName)
    }
}

var person1 = new personClass(18,'male');
var person2 = new personClass('xiaohong',18,'female');

person1和person2是独立的两个对象
当要设置默认值时,还是要遵循有默认值的属性放最后的原则
(回忆起当年学c++和Java的感觉,心里有点。。。)

操作对象本身的属性(增删改查,遍历所有属性)

查:

获取对象的属性——用点’.’ 或者方括号[]

//方法一
var name = person1.name;
//方法二
var name = person1['name'];

当属性名可以不用引号时才能用点的方式获取
使用方括号时,如果不是纯数字,记得加引号

改:

//方法一
person1.name = 'xiaoming1';
//方法二
person1['name'] = 'xiaoming2';

修改属性时,如果对象里没有这条属性,会自动加上

增:

//方法一
person1.height = 180;
//方法二
person1['height'] = 180;

删:

var person1 = {
    name:'xiaoming',
    age:18,
    sex:'male',
    slogan: function() {
        console.log('My name is xiaoming.')
    },
    first_name:'xiao',
    son:{
        name:'xiao xiao ming',
    }
}
var xiaoxiaoming = person1.son;
delete person1.son;

此时person1已经没有son属性,但xiaoxiaoming还存在
删属性只是切断了对象和属性之间的联系,没有将属性销毁回收

遍历属性:

for (var pN in person1) {
    console.log('person1的属性名:'+pN+",值:"+person1[pN]);
}

对象的存储、引用

var person1 = {
    name:'xiaoming',
    age:18,
    sex:'male',
    slogan: function() {
        console.log('My name is xiaoming.')
    },
    first_name:'xiao',
    son:{
        name:'xiao xiao ming',
    }
}

var person2 = person1;
person2.name = 'xiaoming2'
console.log(person2)
console.log(person1)

person1和person2中的name都是’xiaoming2’

原因:
1.变量仅能存储很小的东西,如数字,字符串,布尔值;

2.对象比较复杂,变量存储的是对象的地址,即引用;

3.变量不存储对象的内容,因此我们对对象的操作是通过方括号或点实现的;

4.person2得到的也是对象的地址,因此,person2对属性做的修改直接修改了该对象(浅拷贝)

5.如果想要快速定义出独立的对象,又不冗余地重新再写一遍,可以用类来定义对象结构

命名空间

多人协作时,个人维护自己的内容,命名不冲突
例如:

//我是ccy,创建name和age变量
var ccy = {}
ccy.name = 'ccy';
ccy.age = 18;

系统提供的非常好用的对象

1.Object()创建空对象

obj1 = {};
//相当于使用系统创建:
obj2 = new Object();

2.数组合并、小数取指定位数、字符串按固定值拆分、数字转字符串、时间相关Date对象(计算代码性能,耗时,getTime())、

//耗时计算
var time1 = new Date();
var t = 0;
for (var i = 0; i < 1000000; i++){
    t++;
}
var time2 = new Date();
t1 = time1.getTime();
t2 = time2.getTime();
n = t2-t1;
//结果:n=4;

3.Math(不是类,相当于命名空间,用点调用)
Math.random():0-1之间随机数
Math.floor()向下取整

// 获得0-9随机数
for (var i=0; i < 10;i++){
    console.log(Math.floor(Math.random()*10));
}

具体看官网:链接

标签:console,name,对象,JS,三十九,入门篇,person1,var,属性
来源: https://blog.csdn.net/qq_43523725/article/details/113776607

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有