JS基础三

对象

对象的概念:对象是一个具体的事物。

对象是由书写和方法组成的

  • 属性:事物的特征,在对象中用数学来表示 person.name
  • 方法:事物的行为,在对象中用方法来表示

三种创建对象的方法

  1. 对象字面量(对象名中采取键值对的形式)

    • 里面的属性或者方法,我们采用键值对的形式

    • 多个属性和方法,我们用逗号隔开的

    • 方法冒号后面我们用的是匿名函数

    • 调用对象的属性,我们采用 对象名.属性名 或者对象名[‘属性名‘]

    • 调用对象的方法 对象名.方法()

      var obj ={ name = ‘张三‘, age = 18; sayHi:function(){ console.log(‘hi~~‘); } }
  2. new Object 创建对象

    利用等号来进行赋值,添加对象的属性和方法

    var obj = new Object(); obj.name = ‘鸣人‘; obj.age = 19; obj.sex = ‘男‘; obj.skill = function(){ console.log(‘影分身‘); } console.log(obj.name); console.log(obj.skill()); 
  3. 利用构造函数创建对象(因为前面两种方法一次只能从创建一个对象)

    • 构造函数的首字母要大写
    function Star(name,age,sex){ this.name = name; this.age = age ; this.sex= sex; } var ldh = new Star(‘刘德华‘,18,‘男‘); console.log(ldh.name);

new 关键字的执行过程

  1. new构造函数可以在内存中创建一个空的对
  2. this就会只想刚才创建的空对象
  3. 执行构造函数里面的代码 给这个空对象添加属性和方法
  4. 返回这个对象

for..in遍历

用来遍历对象或者数组,主要用域遍历对象,可以遍历对象的属性(主要),也可以遍历方法

var ldh = new Star(‘刘德华‘,18,‘男‘); for(var k in ldh){ console.log(k); console.log(ldh[k]); }

ldh[k] 里面的k不需要引号 这个k是一个变量

p155 内置对象

JS里面有三种对象:自定义对象,内置对象,浏览器对象(独有)

概念:JS语言自带的对象,提供给开发者使用,并且提供一些常用的或者是最基本而必要的功能

最大的优点:帮助我们快速开发

p156 查阅文档

主要使用MDN(推荐),W3C来查询

使用方法:搜索对应的方法 就可以出现详细信息的功能(了解语法,参数,返回值

p169 数组

数组的创建的两种方式

  1. 字面量**

    var arr = [1,2,3];

  2. new Array()

    var arr = new Array(2);//表示这个数组 长度 为2

    var arr = new Array(2,3); 等价于[2,3]

检测是否为数组

1.instanceof : 判断格式

var arr = [];console.log(arr instanceof Array);//方法一console.log(Array.isArray(arr));//方法二 

2.Array.isArray(参数)

IE9 以上支持,H5的新方法

添加和删除数组元素

  1. push()方法

    var arr = [1,3,4];arr.push(100);console.log(arr);arr.unshift(arr);
  2. unshift 在数组的开头添加元素

删除数组元素(两种)

arr.pop() :一次只能删除一个 最后的那个,返回的是删除的那个元素

arr.shift(); 删除数组第一个元素 一次只能删一个

翻转数组,排序

arr.reverse();//可以之间翻转

arr.sort();排序 升序,降序

 var arr = [2,1,3,4]; arr.sort(function(a,b){ return a-b;//a-b是升序排列,b-a是降序排列 }); console.log(arr);

返回数组索引号

arr.indexOf(‘blue‘); 只返回 **第一个 **满足条件的索引号

**找不到 **的情况下,则 返回-1

arr.lastIndexOf(‘blue‘);从**后面往前面查找 **查到到的第一个

数组去重

拿着旧数组的元素去查询新数组,如果有了则不查询 利用indexOf()是否等于-1

function unique(arr){ var newArr = []; for(var i =0 ;i<arr.length;i++){ if(newArr.indexOf(arr[i]) === -1){ newArr.push(arr[i]); } } return newArr; } var arr =[1,1,3,3,2,2,5,5]; console.log(unique(arr));

数组转换为字符串

  1. arr.toString();

  2. join(分隔符)

    console.log(arr.toString());console.log(arr.join(‘--‘));

基本包装类型

简单数据类型为什么有length的属性呢?

下面是他的内部运行过程

(1).把简单数据类型包装成复杂数据类型

var temp = new String(‘Andy‘);

(2).赋值给我们声明的变量

str = temp;

(3).销毁临时变量

temp = null;

字符串不可变

字符串改变其实是指向的变化,是新开辟的字符

不要大量拼接字符串

根据字符返回位置

字符串的所有操作都不会改变字符串本身

str.indexOf(‘要查找的字符‘,起始的位置)

替换字符,split()方法

console.log(str.replace(‘a‘,‘z‘));

只会替换第一个字母

简单数据类型和复杂数据类型

值类型:null(返回一个空对象),number,boolean,string,undefined

引用类型:

  1. 堆:复杂数据类型(放对象的具体内容,它的地址存放在栈中)
  2. 栈:简单数据类型(直接开辟一个内存空间,存放的是值)

相关文章