对象

对象

对象是一个具体的事物

在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串,数值,数组,函数等

对象由属性和方法组成的

  • 属性:事物的特征,在对象中用属性来表示(常用名词)
  • 方法:事物的行为,在对象中用方法来表示(常用动词)

保存一个值时,可以使用变量,保存多个值(一组值)时,可以使用数组.

为什么使用对象?

对象的结构相比于数组更加清晰和简单

对象的特点

  1. 对象属于复杂数据类型,即引用数据类型
  2. 在存储变量时,存储时,变量中存储的仅仅是地址,放在堆中;其具体的值放在栈中,并指向堆中的变量
  3. 传参过程是把堆地址传给不同的参数

创建对象的三种方式

利用字面量创建对象

对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法

对象里面还可以放对象,对象里面还可以放方法

//利用字面量创建对象var obj = {}; //空对象var obj = {uname: '张三丰',age: 18,sex: '男',sayHi: function () {console.log('hi~');}}//(1)里面的属性或者方法我们采取键值对的形式 键 属性: 值(属性值)//(2)多个属性或者方法用逗号隔开//(3)方法冒号后面跟的是一个匿名函数

调用对象的属性

//采取 对象名.属性名
console.log(obj.sex);//对象名['属性名']
console.log(obj['age']);

调用对象的方法

//对象名.方法名();
obj.sayHi();

变量和属性的异同

相同点:都是用来存储数据

区别:

变量 属性
单独声明并赋值,使用的时候直接写变量名,单独存在 在对象里面的称为属性,不需要声明,使用的时候必须是对象.属性

函数是单独声明的,并且调用的 函数名() 单独存在

方法在对象里面调用的时候 对象.方法()

利用new Object创建对象

var obj = new Object(); //创建一个空对象obj.name = 'q';obj.age = 18;obj.sex = '男';obj.sayHi = function() {console.log('sayHi~');};console.log(obj);

利用构造函数创建对象

优点在于可以利用方法批量创建某一类对象

因为我们前面两种创建对象的方式一次只能创建一个对象

构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

构造函数用于创建某一类对象,其首字母要大写

构造函数要和new一起使用才有意义

//声明构造函数
function 构造函数名() {this.属性 = 值;this.方法 = function() {};
}
new 构造函数名();
-----------------------------------------------
function Star(name, age, sex) {this.name = name;this.age = age;this.sex = sex;this.sing = function(song) {console.log(song);};
}
var ldh = new Star('刘德华', 18, '男');
ldh.sing('冰雨');
console.log(ldh.name);

1.构造函数名字首字母必须要大写字母

2.构造函数不需要return就可以返回结果

3.调用构造函数必须使用new

4.只要 new

new关键字

  1. 在内存中创建一个新的空对象
  2. 让 this 指向这个新的对象
  3. 执行构造函数里面的代码,给这个新对象添加属性和方法
  4. 返回这个新对象(所以构造函数里面不需要return)

遍历对象属性

for…in 语句用于对数组或者对象的属性进行循环操作。

for (变量 in 对象名字) {// 在此执行代码
}
var obj = {name : 'pink',age : 18,sex : '男'}for (var k in obj ) {console.log(k);//属性名console.log(obj[k]);//obj[k]是属性值}

语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为 k 或者 key

案例

/*
创建一个电脑对象
有颜色(color)、重量(weight)、品牌(brand)、型号(type)等属性,
有看电影(watch)、听音乐(listen)、打游戏(play)和敲代码(coding)等方法。
题目描述:
颜色、重量、品牌、型号是属性;看电影、听音乐、打游戏、敲代码是方法,在调用方法时分别打印 “我在看电影/听音乐/打游戏/敲代码”
*///函数创建方法function Computer(color, weight, brand, type) {this.color = color;this.weight = weight;this.brand = brand;this.type = type;this.fn = function () {console.log('我在看电影');console.log('我在听音乐');console.log('我在打游戏');console.log('我在敲代码');};}var c = new Computer('red', 180, 'abc', 1);console.log(c);c.fn();  //console.log(c.fn()); 会显示undefined//字面量var c = {color: 'red',weight: 180,brand: 'abc',type: 1,fn: function () {console.log('我在看电影');console.log('我在听音乐');console.log('我在打游戏');console.log('我在敲代码');}}console.log(c);c.fn();//new objectvar c = new Object();c.color = 'red';c.weight = 180;c.brand = 'abc';c.type = 1;c.fn = function () {console.log('我在看电影');console.log('我在听音乐');console.log('我在打游戏');console.log('我在敲代码');};console.log(c);c.fn();
//遍历下面对象
var dog = {dName:"coco",type:"阿拉斯加犬",age:"5岁",color:"棕红色"
};//遍历对象
for (var k in dog) {console.log(dog[k]);}
//请描述下面代码的输出结果以及运行原因var num = 1;
function demo(){console.log(num);function demoSon(){console.log(num);num = 3;console.log(num);}var num = 2demoSon();
}
demo();//变量提升 函数提升 局部变量 全局变量 作用域链 变量定义
var num; //变量提升function demo() { //函数提升var num; //变量提升function demoSon() {    //函数提升console.log(num);   //2    2num = 3;    //全局变量console.log(num);   //3     3}console.log(num); // undefined   1num = 2;demoSon();}num = 1;demo();
//输出结果 undefined 2 3
/*
请使用arguments完成函数getResult,实现得到输入的所有的数值中的最小值、最大值、平均数、总和等功能作业描述:函数名:getResult函数调用方式:getResult(数值1,数值2,数值3,数值4.....)函数功能:返回值是一个对象,这个对象有sum, max, min, averages等属性,分别表示实参的总和、最大值、最小值、平均数等
*/function getResult() {var sum = arguments[0];//计算sumfor (var i = 1; i < arguments.length; i++) { //遍历数组,存入数值sum += arguments[i];}//计算maxvar max = arguments[0];for (var i = 1; i < arguments.length; i++) {if (arguments[i] > max) {max = arguments[i];}}//计算minvar min = arguments[0];for (var i = 1; i < arguments.length; i++) {if (arguments[i] < min) {min = arguments[i];}}//计算avgavg = sum / arguments.length;//创建对象function Obj(sum, max, min, avg) {this.sum = sum;this.max = max;this.min = min;this.avg = avg;}//传入属性值给对象var arr = new Obj(sum, max, min, avg);return console.log(arr);
}
getResult(100, 2, 31, 42, 15, 56);
/*
以下有两个数组,一个数组arr是班级里所有的学员的名称,一个数组currentArr是提交了每日反馈的学员名单,请创建一种算法,把未提交每日反馈的学员筛选出来
*/
var arr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗","王思聪", "张绿", "李德", "郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东","王可可"  "陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];var currentArr = ["张瑞淑", "徐海涛", "谢岗岗", "薛鹏", "魏明杨", "党婷", "熊飞", "郑翠翠", "李航卫", "屈涛", "汪孝双", "代攀飞", "武志钰", "王亚龙", "周芙榕", "李涛", "郝颖", "文冲洋", "王旭拯", "胡佳豪", "寇晓丽", "马晓晗", "张绿", "李德","郑萍", "张凯", "张嘉成", "葛云侠", "杨磊", "任变", "景德", "高卷林", "刘益凡", "赵娜", "陈章鸣", "张荣召", "赵凯旋", "程倩倩", "脱朝平", "刘吉利", "郭苗苗", "马建峰", "潘瑞", "闫翔", "马晨", "李轩轩", "黄红梅", "刘书彬", "罗强", "刘东", "陈泽文", "李嘉琪", "段佳琦", "黄燕", "邱淑鸿", "宋翔宇", "王波", "樊琳", "王兆国", "许成", "李兴"];function arrMath(arr, currentArr) {var newArr = [];//创建新数组var type = false;//默认为false,如果匹配不到则为truefor (var i = 0; i < arr.length; i++) {for (var m = 0; m < currentArr.length; m++) {if (arr[i] == currentArr[m]) { //将arr和currentArr里面的每一个值进行比较type = false;//如果currentArr里面有值匹配,则输出falsebreak;//如果匹配到,则跳出循环} else {type = true;}}if (type == true) {//循环完成后,将值还为true的,拿出来创建新数组newArr[newArr.length] = arr[i];}}return newArr;
}
var re = arrMath(arr, currentArr);
console.log(re);

JavaScript对象与内置对象——对象(一)相关推荐

  1. VBA---EXcel工具栏及控件对象、助手对象、内置对话框对象介绍

    又是一篇别人总结的文章,摘取了其中一部分,其中CommandBar对象比较有用. 一)工具栏及其控件对象 在Office中通过VBA开发工具栏和菜单,需使用Office提供的CommandBar.Co ...

  2. JavaScript中本地对象、内置对象和宿主对象

    http://www.jianshu.com/p/a52e6e183427 http://blog.csdn.net/weiyastory/article/details/52837466 http: ...

  3. JavaScript内置对象(内置对象、查文档(MDN)、Math对象、日期对象、数组对象、字符串对象)

    目录 JavaScript内置对象 内置对象 查文档 MDN Math对象 Math概述 案例一:封装自己的对象 随机数方法 random() 案例一:猜数字游戏 日期对象 Date 概述 Date( ...

  4. JavaScript 的自定义对象 、内置对象、 浏览器对象(window对象以及子对象)、Dom对象

    JS 中的 Object从本质上看,Object 是一个构造函数,用于创建对象. console.dir(Object); //ƒ Object() var obj = new Object(1); ...

  5. JavaScript的常用内置对象

    JavaScript的常用内置对象 Math对象 Math对象的使用 练习 日期对象 日期对象的使用 日期对象的常用get方法 日期对象的常用set方法 练习 数组对象 数组类型检测 添加或删除数组元 ...

  6. 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍...

    昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  7. 内置对象和内置函数_内置假对象

    内置对象和内置函数 尽管模拟对象是进行单元测试的理想工具,但通过模拟框架进行模拟可能会将您的单元测试变成难以维护的混乱. 这种复杂性的根本原因是我们的对象太大. 他们有很多方法,这些方法返回其他对象, ...

  8. ES6学习笔记(五):轻松了解ES6的内置扩展对象

    前面分享了四篇有关ES6相关的技术,如想了解更多,可以查看以下连接 <ES6学习笔记(一):轻松搞懂面向对象编程.类和对象> <ES6学习笔记(二):教你玩转类的继承和类的对象> ...

  9. JS基础 -- 大复习(阶段六:对象和内置对象及预解析)

    1.概念 现实生活:对象就是东西,是一个具体的事物.万物皆对象 程序角度: 对象是一组无序的数据的集合.包含属性与方法 2.对象的创建 方式1:字面量 var person = {      name ...

  10. 【 js基础 Day4】面向过程,面向对象,自定义对象,内置对象

    01 复习 函数:把一些重复的代码封装在一个地方,在需要的时候直接调用这个地方的代码就可以了 函数作用:代码重用 函数的参数: 1.形参:函数定义的时候,函数名字后面的小括号里的变量 2.实参:函数调 ...

最新文章

  1. Franzis CutOut 9 Professional中文版
  2. 用户dsn保存位置‘_苹果iOS 13.6终于能保存文章阅读进度了 朋友都等秃了
  3. 保持SVN仓库结构只checkout部分子目录
  4. js数组去重,合集等操作
  5. java 的 == 和equals()区别
  6. DM8168芯片级资源
  7. 2016蓝桥杯C++A:消除尾一(二进制运算)
  8. mysql 苏勇_30.每日一个Linux命令----hwclock
  9. 抢占云安全管理高地 启明星辰先发云SOC
  10. 全新 16 核神经网络引擎,a13神经网络处理器
  11. 接入支付宝支付接口,以及SDK用法,Thinkphp6。
  12. Matlab 常用语句(5)---eig(求特征值和特征向量)
  13. IT公司盈利模式分析
  14. 创业者李一男:过去的荣耀早已归零
  15. linux之连接服务器
  16. MindMapper中如何添加父主题
  17. NVIDA CUDA显卡算力对照表
  18. DataQL The content of elements must consist of well-formed character data or markup. 问题
  19. 为什么我劝你要多攒钱?
  20. SVM算法的生动讲解

热门文章

  1. 记一次华为交换机冲突问题
  2. 扩散模型(Diffusion Model)——由浅入深的理解
  3. PAJ7620u2手势模块
  4. NepCTF2021-Web部分(除画皮)
  5. 计算机原理---网络基础知识
  6. 与心态相关的写作储备
  7. 实用的自然码双拼口诀
  8. 学习编程时真正值得一读的一篇文章 与 书籍
  9. java8的lambda中的map相关操作
  10. 数据结构笔记(王道考研) 第五章:树和二叉树