JS基础三
对象
对象的概念:对象是一个具体的事物。
对象是由书写和方法组成的
- 属性:事物的特征,在对象中用数学来表示 person.name
- 方法:事物的行为,在对象中用方法来表示
三种创建对象的方法
-
对象字面量(对象名中采取键值对的形式)
-
里面的属性或者方法,我们采用键值对的形式
-
多个属性和方法,我们用逗号隔开的
-
方法冒号后面我们用的是匿名函数
-
调用对象的属性,我们采用 对象名.属性名 或者对象名['属性名']
-
调用对象的方法 对象名.方法()
var obj ={ name = '张三', age = 18; sayHi:function(){ console.log('hi~~'); } }
-
-
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());
-
利用构造函数创建对象(因为前面两种方法一次只能从创建一个对象)
- 构造函数的首字母要大写
function Star(name,age,sex){ this.name = name; this.age = age ; this.sex= sex; } var ldh = new Star('刘德华',18,'男'); console.log(ldh.name);
new 关键字的执行过程
- new构造函数可以在内存中创建一个空的对
- this就会只想刚才创建的空对象
- 执行构造函数里面的代码 给这个空对象添加属性和方法
- 返回这个对象
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 数组
数组的创建的两种方式
-
字面量**
var arr = [1,2,3];
-
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的新方法
添加和删除数组元素
-
push()方法
var arr = [1,3,4]; arr.push(100); console.log(arr); arr.unshift(arr);
-
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));
数组转换为字符串
-
arr.toString();
-
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
引用类型:
- 堆:复杂数据类型(放对象的具体内容,它的地址存放在栈中)
- 栈:简单数据类型(直接开辟一个内存空间,存放的是值)