万物皆是对象,对象是一个具体的事物。

对象是由特征(属性),行为(方法)来构成。

自定义对象,内置对象,浏览器对象(前两个属于ECMAscript,最后一个属于js独有)

  1. <script>
  2. // var obj ={}; //创建一个空的的对象
  3. //创建有属性有方法的对象
  4. var obj= {
  5. uname: \'张三\', //对象属性
  6. age18, //对象属性
  7. sex: \'18\',
  8. say: function( ) {
  9. console.log(\'hi~\'); //创建一个方法
  10. }
  11. }
  12. </script>

注:
1.属性或者方法采用的是键值对的形式,中间用冒号隔开;
2.多个属性或者方法之间用逗号隔开;
3.创建方法 —— 冒号后面跟的是一个匿名函数

  1. <script>
  2. var obj = new Object(); //创建一个空的对象
  3. //添加属性
  4. obj.uname = \'张学友\';
  5. obj.sing = \'李香兰\';
  6. //添加方法
  7. obj.say = function() {
  8. console.log(\'我是张学友\');
  9. }
  10. </script>

注释:

用关键字new Object创建的对象,添加属性和方法要用等号直接赋值的方式添加。

1.把多个对象都有的属性和方法装到函数里面,这个函数称为构造函数。
2.可以重复使用一部分代码

语法

  1. function Fun_name() {
  2. this.属性=值;
  3. this.方法=function(){}
  4. }
  1. <script>
  2. //创建构造函数
  3. function Star(name, age, sex) {
  4. this.name = name;
  5. this.age = age;
  6. this.sex = sex;
  7. this.sing = function(sang) {
  8. console.log(sang);
  9. }
  10. }
  11. //调用构造函数
  12. var ldh = new Star(\'刘德华\', \'\', \'18\');
  13. console.log(typeof(ldh)); //输出为object
  14. //调用对象ldh属性和方法
  15. console.log(ldh.name);
  16. console.log(ldh.age);
  17. console.log(ldh.sex);
  18. ldh.sing(\'冷雨夜\');
  19. </script>

注:

1.构造函数的首字母要大写
2.构造函数不需要return就可以返回结果
3.调用构造函数前面要加 new
4.在构造属性和方法的前面要加this

构造函数 :相当于一个类,抽象了对象的公共部分。
对象:通过关键字new来创建对象,称为实例化对象。
对象的本质:一组无序的相关属性和方法的集合。

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

  1. //方法一
  2. console.log(obj.uname);
  3. //方法二,属性名要用引号引起来
  4. console.log(obj[\'uname\']);
  1. console.log(obj.say());
  1. function Obj(name,sex) {
  2. this.name = name;
  3. this.sex = sex;
  4. }
  5. var boy = new Obj(\'lc-snail\',\'糙汉子\')
  6. //添加属性(方法一)
  7. boy[\'age\']=\'3\'
  8. //方法二
  9. boy.age=\'3\'
  10. //添加方法(方法一)
  11. boy[\'say\'] = function (value){
  12. alert(value)
  13. }
  14. //方法二
  15. boy.say = function (value){
  16. alert(value)
  17. }
  18. //调用新添加的方法
  19. boy.say(\'hello word\');
  20. //调用新添加的属性
  21. console.log(boy[\'age\']);

for...in

  1. <script>
  2. //创建一个对象
  3. var obj = {
  4. name: \'snail_y\',
  5. age: 18,
  6. sex: \'\'
  7. }
  8. //遍历<object>
  9. for (var key in obj) {
  10. console.log(key + \'----\' + obj[key]);
  11. }
  12. </script>

注:

key为属性名或者方法名

Object.keys/values(obj)

  1. <script>
  2. //创建一个对象
  3. var obj = {
  4. name: \'snail_y\',
  5. age: 18,
  6. sex: \'\',
  7. say: function() {
  8. console.log(\'hi~\'); //创建一个方法
  9. }
  10. }
  11. console.log(Object.keys(obj))
  12. console.log(Object.values(obj))
  13. </script>

内置对象指的是js自带的一些对象,这些对象供开发者使用,并且提供了一些常用的或者是最基本的功能(属性和方法)。

Math数学对象,不需要new,直接调用就行

取最大值

  1. console.log(Math.max(1,2,3)) //输出3
  2. console.log(Math.max(1,2,\'我是调皮捣蛋字符串\')) //输出NaN

取绝对值

  1. Math.abs()

三个取整的方法

  1. //Math.floor( ) 向下取整
  2. Math.floor(1.999) //输出1
  3. //Math.ceil( ) 向上取整
  4. Math.ceil(0.555) //输出1
  5. //Math.round() 四舍五入
  6. Math.round(0.666) /输出1

获取一个随机数

Math.random() 获取 一个浮点型伪随机数字,在0(包括0)和1(不包括)之间。

  1. function getRandom() {
  2. return Math.random();
  3. }

得到一个两数之间的随机整数(不含最大值,含最小值)

  1. function getRandomInt(min, max) {
  2. min = Math.ceil(min);
  3. max = Math.floor(max);
  4. return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
  5. }

得到一个两数之间的随机整数,包括两个数在内

  1. function getRandomIntInclusive(min, max) {
  2. min = Math.ceil(min);
  3. max = Math.floor(max);
  4. return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
  5. }

更多方法和属性查看文档(https://developer.mozilla.org/zh-CN)

封装自己的数学对象

  1. var myMath = {
  2. PI: 3.1415926,
  3. max: function () {
  4. var max = arguments[0];
  5. for (var i = 1; i < arguments.length; i++) {
  6. if (arguments[i] > max) {
  7. max = arguments[i];
  8. }
  9. }
  10. return max;
  11. },
  12. min: function () {
  13. var min = arguments[0];
  14. for (var i = 1; i < arguments.length; i++) {
  15. if (arguments[i] < min) {
  16. min = arguments[i];
  17. }
  18. }
  19. return min;
  20. }
  21. }
  22. //调用属性
  23. console.log(myMath.PI);
  24. //调用方法
  25. console.log(myMath.max(1, 2, 3, 4));

Date()是构造函数,需要用new实例化

  1. //1.不带参数
  2. var date = new Date();
  3. console.log(date); //返回系统当前时间
  4. //2.带参数(输出的是输入的时间)
  5. 数字型 2019,10,18
  6. 字符串型 \'2019-10-20 8:8:8\'
  7. var date = new Date(\'2019-10-20 8:8:8\');
  8. console.log(date); //输出的是输入的时间

格式化日期

  1. var date = new Date();
  2. console.log(date.getFullYear());//返回年
  3. console.log(date.getMonth() + 1); //月 会比当前月份少1
  4. console.log(date.getDate()); //日
  5. console.log(date.getDay()); //星期 返回的是0——6
  6. console.log(date.Hours()); //时
  7. console.log(date.getMinutes()); //分
  8. console.log(date.getSeconds()); //秒

dmeo1——输出时分秒

  1. var date = new Date();
  2. var year = date.getFullYear();
  3. var month = date.getMonth();
  4. var dates = date.getDate();
  5. var day = date.getDay();
  6. var arr = [\'星期天\', \'星期一\', \'星期二\', \'星期三\', \'星期四\', \'星期五\', \'星期六\']
  7. var arr_1 = arr[day];
  8. console.log(\'今天是\' + year + \'\' + month + \'\' + dates + \'\' + arr_1)
  9. //输出今天是2020年2月16日星期一

dmeo2——输出时分秒

  1. function getTime() {
  2. var time = new Date();
  3. var h = time.getHours();
  4. h = h < 10 ? \'0\' + h : h;
  5. var m = time.getMinutes();
  6. m = m < 10 ? \'0\' + m : m;
  7. var s = time.getSeconds();
  8. s = s < 10 ? \'0\' + s : s;
  9. return h + \':\' + m + \':\' + s;
  10. }
  11. console.log(getTime());

时间戳

距离1970/1/多少毫秒

  1. <script>
  2. var date = new Date();
  3. //方法一
  4. console.log(date.valueOf()); //O是大写
  5. //方法二
  6. console.log(date.getTime());
  7. //方法三
  8. var date1 = +new Date(); //new后面没点
  9. console.log(date1);
  10. //方法四H5新增
  11. console.log(Date.now());
  12. </script>

倒计时

  1. function counDown(time) {
  2. var nowTime = +new Date(); //获取当前时间戳
  3. var inputTime = +new Date(time); //用户输入结束时间
  4. var times = (inputTime - nowTime) / 1000; //所剩的秒数
  5. var d = parseInt(times / 60 / 60 / 24); //所剩天数
  6. d = d > 10 ? d : \'0\' + d;
  7. var h = parseInt(times / 60 / 60 % 24); //小时
  8. h = h > 10 ? h : \'0\' + h;
  9. var m = parseInt(times / 60 % 60); //分钟
  10. m = m > 10 ? m : \'0\' + m;
  11. var s = parseInt(times % 60); //秒
  12. s = s > 10 ? s : \'0\' + s;
  13. return d + \'\' + h + \'\' + m + \'\' + s + \'\';
  14. }
  15. console.log(counDown(\'2020-3-16 18:59:00\'))
  1. var temp = new String(\'andy\');
  2. //把临时变量的值给str
  3. str=temp;
  4. //销毁这个临时变量
  5. temp= null;

包装后

  1. var str = \'andy\';
  2. console.log(str.lengtht); //只有复杂数据类型和对象才有属性和方法

注释:

1.只有对象才有方法和属性 ,复杂数据类型才有属性和方法。
2.简单的数据类型(String Number Boolean)包装为复杂数据类型

重新赋值只是里面的值不可改变,虽然看上去可以改变内容但其实是内存地址变了,内存中新开辟了一个内存空间。

  1. var str = \'abc\';
  2. str = \'hello\';
  3. console.log(str) //输出hello,但是原来的abc还在内存中,大量使用字符串会有效率问题。

如果未找到该值,则返回-1,如果找到,则返回第一次出现的索引。

  1. indexOf(\'要查找的字符\',开始的位置) //从前往后找,只返回第一个
  2. lastindexOf( ) //从后往前找,只返回第一个

demo —— 查找某个字符,在字符串中出现的次数和出现的位置

  1. var str = \'abcdefgjklabcdeddeeac\';
  2. var index = str.indexOf(\'a\');
  3. var num = 0;
  4. while (index !== -1){
  5. console.log(index);
  6. index = str.indexOf(\'a\',index + 1);
  7. num++
  8. }
  9. console.log(\'a\' + \'出现的次数为\' + num);

输出改索引位置的字符,如果指定的 index 值超出了该范围,则返回一个空字符串。

  1. //方法一
  2. charAt(index) //返回字符
  3. //方法二
  4. charCodeAr(index) //返回字符的ASCLL码
  5. str[index] //HTML5新增

demo —— 返回字符串里面出现次数最多的值

  1. var str = \'aaaaasdfghjkklqwreeeryifnnbaaaddd\';
  2. var a = {};
  3. for (var i = 0; i < str.length; i++){
  4. var chars = str.charAt(i);//获取字符串的每一个字符
  5. if(a[chars]) { //判断该字符是否存在对象中
  6. a[chars]++; //,如果存在就+1
  7. }else {
  8. a[chars] = 1;//,如果不存在就赋值为1.
  9. }
  10. }
  11. console.log(a)
  12. var max = 0;
  13. var ch = \'\';
  14. for (var k in a) {
  15. //k得到的是属性名
  16. //a[k]得到的是属性值
  17. if (a[k] > max) {
  18. max = a[k];
  19. ch = k;
  20. }
  21. }
  22. console.log(\'出现次数最多的是\' + ch);

substr(开始位置,截取几个字符)

  1. var str1 = \'改革春风春\';
  2. console.log(str1.substr(2, 2)); //返回春风

replace(被替换的字符,替换字符)

注:只会替换字符串中第一个出现的字符

demo —— 替换字符串中所有的某个字符

  1. var str1 = \'aaaabbbbb\';
  2. while (str1.indexOf(\'b\') !== -1) {
  3. str1 = str1.replace(\'b\', \'a\');
  4. }
  5. console.log(str1);

5.字符串转换为元组

split( \'分隔符’)

  1. var str = \'red,blue,pink\';
  2. console.log(str.split(\',\') //输出 [\'red\',\'blue\',\'pink\'}

简单数据类型:

称为基本数据类型在存储时变量中存储的是值本身,因此又叫做值类型。如:string number boolean undefined nul

复杂数据类型:

在存储变量中存储的是地址(引用),因此又叫做引用数据类型,通过new关键字创建对象,如,Object Arrary,Date等

简单数据类型,放到栈里面,存放的是值。
复杂数据类型放到堆里面,在栈里面放地址,地址指向堆里面的数据。

参考来源:黑马程序员pink老师讲课视频

版权声明:本文为lc-snail原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lc-snail/p/15193669.html