(一)、对象

 var teacher = {name: '张三',age: 32,sex: 'male',height: 176,weight: 130,teacher: function(){console.log('I am teaching JavaScript');},smoke: function(){console.log('I am smoking');},eat: function(){console.log('I am having a dinner');}
}

(1)增加属性和方法

teacher.address = '北京';
teacher.drink = function(){console.log('I am drinking bear');
}

(2)删除属性和方法

删除属性
delete teacher.address;
删除方法
delete teacher.teach;     //注意:笔试题 不能加()  加括号就变成执行了//删除键名就可以了
   var teacher = {name: '张三',age: 32,sex: 'male',height: 176,weight: 130,teacher: function(){console.log('I am teaching JavaScript');},smoke: function(){teacher.weight--;console.log(teacher.weight);},eat: function(){teacher.weight++;console.log(teacher.weight);}}teacher.smoke();
teacher.smoke();
teacher.eat();

如何让teacher变成我,这样就变成了我的体重要加一斤,我的体重要减一斤,而不是老师的体重要加一斤,老师的体重要减一斤。

(3)、this

记住:this代表的是对象本身

smoke: function(){this.weight++;console.log(this.weight);
}

(4)、array.splice(index, howmany, item1, …, itemX)

splice() 方法向/从数组添加/删除项目,并返回删除的项目。

**注释:**splice() 方法会改变原始数组。

参数 描述
index 必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。
howmany 可选。要删除的项目数。如果设置为 0,则不会删除任何项目。
item1, …, itemX 可选。要添加到数组中的新项目。
var num = 3;
var arr = [1,2,3,4];for(var i = 0; i < arr.length; i++){if(arr[i] === num){arr.splice(i,1); //第一个参数,数组下标,第二个参数要删除几个}
}
console.log(arr); //[1,2,4]

(5)、indexOf()

array.indexOf(item,start)

stringObject.indexOf(searchvalue,fromindex)
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

参数 描述
item 必须。查找的元素。
start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
var num = 3;
var arr = [1,2,3,4];
console.log(arr.indexOf(num));// 2   返回元素所在的下标,如果不存在就返回-1

(6)、案例

attendence 出勤

var attendance = {students: [],total: 6,join: function(name){this.students.push(name);if(this.students.length === this.total){console.log(name + '到课,学生已到齐');}else{console.log(name + '到课,学生未到齐');}},leave:function(name){var idx = this.students.indexOf(name);if(idx !== -1){this.students.splice(idx,1);}console.log(name + '早退');console.log(this.students);},classOver: function(){this.students = [];console.log('已下课');}
}attendance.join('张三');
attendance.join('李四');
attendance.join('王五');
attendance.join('赵六');
attendance.join('吴七');
attendance.join('孙八');
attendance.leave('李四');
attendance.classOver();
//这个案例学到了splice indexOf 方法内部是可以传递参数的,在调用的时候可以传递相应的实参

(二)、构造函数

(1)、对象字面量

声明了一个变量,将一个对象赋值给这个变量,这种方式叫对象字面量或对象直接量
这只是一种在javascript中创建对象的方式

var obj = {name:'张三',sex: 'male'
}

(2)、构造函数

构造函数写出来以后可以通过new关键字实例化一个对象
系统自带的构造函数,用系统内置的new Object()来创建一个对象
O大写

对象和构造函数是两码事,对象是通过实例化构造函数而创建的一个对象实例

var obj = new Object();//这种方式跟对象字面量是完全相等的,没有任何区别,没有优势之说,用的也不是特别多
obj.name = '张三';
obj.sex  = '男士';

(3)、自定义构造函数

自定义构造函数 在写项目中会大量使用,因为只要你写模块化,插件化,组件化,必须使用自定义构造函数

自定义构造函数和普通函数没什么区别

大驼峰。不是硬性要求,这只是和普通函数相区别的一种写法。
在对象中,使用: 和 , 而在构造函数中写的是语句,用;隔开

function Teacher(){this.name = '张三';this.sex = '男士';this.weight = 130;this.smoke = function(){this.weight--;console.log(this,weight);}this.eat = function(){this.weight++;console.log(this,weight);}
}
//自定义构造函数也是函数,在没执行之前this根本就不存在,Teacher在GO里面,不执行的时候不看{}里面的
//this根本就没生成,更谈不上指代的是Teacher,Teacher是构造函数,就相当于一个工厂,构造工厂
var teacher = new Teacher(); //这个时候this才生成  要让this存在必须要实例化它//this指向的是谁,this指向的是对象本身。

通过构造函数new出来是不同的对象,对象与对象之间互不影响

var teacher1 = new Teacher();
var teacher2 = new Teacher();teacher1.name = '李四';console.log(teacher1, teacher2);
function Teacher(name,sex,weight,course){this.name = name;this.sex = sex;this.weight = weight;this.course = course;this.smoke = function(){this.weight--;console.log(this,weight);}this.eat = function(){this.weight++;console.log(this,weight);}
}var t1 = new Teacher('张三','男',145,'javascript');
var t2 = new Teacher('李四','女',90,'HTML');
console.log(t1);
console.log(t2);
option选项 配置项这种方法易于维护。

这样传参可以不按照顺序,也知道传递的是什么参数

//option选项 设置项
function Teacher(opt){this.name = opt.name;this.sex = opt.sex;this.weight = opt.weight;this.course = opt.course;this.smoke = function(){this.weight--;console.log(this,weight);}this.eat = function(){this.weight++;console.log(this,weight);}
}var t1 = new Teacher({name: '张三',sex:  '男',weight:145,course:'javascript'
});
console.log(t1);
//teacher.js
function Teacher(opt){this.name = opt.name;this.sex = opt.sex;this.weight = opt.weight;this.course = opt.course;this.smoke = function(){this.weight--;console.log(this,weight);}this.eat = function(){this.weight++;console.log(this,weight);}
}//index.html
<script type="text/javascript" src="teacher.js"></script>
<script type="text/javascript">var t1 = new Teacher({name: '张三',sex:  '男',weight:145,course:'javascript'});
console.log(t1);
</script>

8-对象、构造函数、实例化相关推荐

  1. java new 删除吗,java泛型对象初始化-java泛型对象会实例化吗T t=new T()

    java泛型对象初始化--java泛型对象能实例化吗T t=new T() java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了 泛型反射的 ...

  2. JS-对象-构造函数-实例化-this

    JS-对象-构造函数-实例化-this 1 回顾 1. 定义函数的方式function 关键字表达式方式Function 构造函数2. 函数的调用和返回值3. 函数的参数形参和实参形参的默认值argu ...

  3. Python16-面向对象类和对象构造函数

    一.面向对象 1.概念 1.1面向对象的设计思想 面向对象是基于万物皆对象这个哲学观点.在Python中,一切皆对象 举例说明:案例一:我想要吃大盘鸡面向过程 面向对象1.自己去买菜 1.委托一个会砍 ...

  4. Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数

    一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...

  5. JVM:对象的实例化、内存布局与访问定位

    对象的实例化 创建对象的方式 new关键字 最常见的方式 变形1:Xxx的静态方法(单例模式) 变形2:XxxBuilder/XxxFactory的静态方法 Class的newInstance() 反 ...

  6. 类的加载顺序和对象的实例化

    直接就在JDK8中用代码来验证吧. import lombok.extern.slf4j.Slf4j;@Slf4j public class Printer {private String s;pub ...

  7. Java中对象的实例化顺序

    文章目录 1 Java中对象的实例化顺序 1 Java中对象的实例化顺序 继承后的初始化顺序: 静态成员包括静态构造代码块,初始化顺序跟书写顺序有关.

  8. JVM_04 对象的实例化+内存布局+访问定位+直接内存

    一.前言: (1).new 最常见的方式 | 变形1 : Xxx的静态方法 | 变形2 : XxBuilder/XxoxFactory的静态方法 (2).Class的newInstance():反射的 ...

  9. c++11中static类对象构造函数线程安全

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105113421 s ...

  10. JVM学习笔记之-对象的实例化,内存布局与访问定位,直接内存(Direct Memory)

    对象的实例化 对象的内存布局 图解 对象的访问定位 句柄访问 好处 reference中存储稳定句柄地址,对象被移动(垃圾收集时移动对象很普遍)时只会改变句柄中实例数据指针即可,reference本身 ...

最新文章

  1. 为何Google、微软、华为将亿级源代码放一个仓库?从全球最大代码管理库说起...
  2. solr多core的处理
  3. Sprint 站立会议(个人)
  4. java Lock 源码分析
  5. Solr+Hbase多条件查(优劣互补)
  6. 下一代微服务架构基础:ServiceMesh?
  7. windows7 配置iis技巧
  8. 使用Chrome Frame插件解决IE浏览器兼容问题
  9. 利用t-SNE可视化Glove向量
  10. linux多级菜单脚本教程,Linux下使用readline库编程实现多级CLI菜单
  11. 2021如何提升网站的排名?SEO
  12. 几个例子理解博弈论与纳什均衡
  13. 传输速率和传播速率的理解
  14. PowerShell 实现企业微信机器人推送消息
  15. 模电知识体系总结-1.1半导体基础器件
  16. python pyqtgraph绘图库-绘制图形
  17. android电视横竖屏切换在哪里,Android横竖屏切换总结
  18. java实现oracle的months_between函数
  19. 如何简单理解贝叶斯决策理论(Bayes Decision Theory)
  20. [BZOJ1067][SCOI2007]降雨量(线段树)

热门文章

  1. 虚拟化技术与云计算基础 大数据视频教程
  2. 【调剂】江苏师范大学接收调剂研究生,计算化学 机器学习
  3. 网站服务器搭建百青藤,百青藤服务器搭建
  4. FLOW-3D网格划分看运气?
  5. 如何将微信朋友圈中的文章导出成pdf
  6. layui框架的一些基本使用
  7. 使用Layui框架创建表格
  8. 2022 WordPress All Pic Local v0.2 下载外链图片到本地
  9. 去中心化数字身份DID简介——二、一个完整的DID使用流程
  10. 手把手教你搭建属于自己的技术博客(小白教程)