javascript创建对象-调用对象的2种方式-遍历对象-检测对象-对象的增删改查

作者: 鲁智深 分类: JAVASCRIPT 发布时间: 2015-12-06 12:57

创建对象

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
// 1. 声明方式----对象的初始化器方式定义
var obj ={name : 'man',age :  12,fun:function(){return 1}}
console.log(obj);

var obj1 = {
    name : '艾映锋',//属性
    age :  27,//属性
    fun :function () {//方法
        return  10;
    }
}
console.log(obj1);

//构造函数定义对象
var obj2 = new Object();

console.log(typeof obj2);//返回时object,是对象类型
//定义对象名字
obj2.name = '艾映锋';
//定义对象属性
obj2.age = 27;
//定义对象方法
obj2.fun =function () {
    return 1;
}
console.log(obj2);//输出{ name: '艾映锋', age: 27, fun: [Function] }

//Object.create()函数创建对象
//继承obj2对象,遍历一下就可以出所有数据
var obj3 = Object.create(obj2);
//遍历一下
for(n in obj3 ){
    console.log(obj3[n]);
}

调用对象2种方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//创建的对象
var obj = {
    name : '奥特曼',//定义属性
    age : '90',
    'ent-type': '测试',//定义变量不建议用特殊字符
    fun : function () {//定义方法
         return  10;
    }
}

// 1、调用对象的属性
console.log(obj.name);
//console.log(obj.ent-type);//js会认为obj.ent是一个属性,type没有被定义

//调用对象的方法
console.log(obj.fun);//调用对象方法需要加上()
console.log(obj.fun());//输出10

// 2. 调用对象的属性和方法 - 通用方式
console.log(obj['name']);
console.log(obj['age']);
console.log(obj.fun());

遍历对象

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
35
36
37
38
39
var obj = {
    name : '程序员节',
    age : 1024,
    fun : function () {
        return 100;
    }
}

//1、for循环遍历
for( var propertyName in obj){
    console.log(propertyName);//输出遍历出了属性和方法的名称
}

for( var propertyName in obj){
    if(obj[propertyName] instanceof Function) {//表达式判断是否是Function类型
        //console.log(obj.propertyName);//这种方式在循环中不行
        console.log(obj[propertyName]());//通用方式可以
    }else {
        console.log(obj[propertyName]);//通用方式可以
    }
}

//2、Object.keys(obj)方法(函数)
console.log(Object.keys(obj));//遍历出的是属性名和方法名
console.log(Object.keys(obj)[0]);
var arr = Object.keys(obj).length;//对象的长度
var arr1 = Object.keys(obj);
console.log(obj);

for(var i = 0 ;i <arr; i++ ){
    if(obj[arr1[i]] instanceof Function) {//arr1[i]是属性名的意思
        console.log(obj[arr1[i]]());
    }else {
        console.log(obj[arr1[i]]);
    }
}

//3、遍历对象Object.getOwnPropertyNames(obj)方法
console.log(Object.getOwnPropertyNames(obj));//输出属性名称

for语句的遍历比较

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//定义数组
arr = [1,2,3,4,5,6,7,8,9];

//for语句
for(i = 0;i<arr.length;i++){
     console.log(arr[i]);
}

//for in语句
for(var num in arr){
    console.log(arr[num]);
}

//for of语句
for (var i of arr){
    console.log(i);
}

访问属性的出错

1
2
3
4
5
6
7
8
9
10
11
var obj = {
    name : '艾映锋',
    age : 16,
    fun :function () {
        return 111;
    }
}

console.log(obj['name']);//能调出
//console.log(obj[name]);name is not defined没有定义变量,没加引号
//obj.fun1(); obj.fun1 is not a function访问不存在的方法

检测对象属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var obj = {
    name : '艾映锋',
    age : 2113,
    fun :function () {
        return 3123;
    }
}

console.log(obj.de);//undefined
if(obj.name !== undefined){//obj.name判断真还是假ture还是false,undefined为假false
    console.log('存在对象属性');
}

// 2. 使用 in 关键字
if('name' in obj){//判断对象中的属性要加上单引号,否则认为是变量
    console.log('对象存在');
}

// 3. Object 提供了 hasOwnProperty() 方法obj.hasOwnProperty(要检测的属性  字符串 名称)
console.log(obj.hasOwnProperty('name'));//返回true
if(obj.hasOwnProperty('name')){
    console.log('对象存在');
}

检测对象的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var obj = {
    name : '艾映锋',
    age : 2113,
    fun :function () {
        return 3123;
    }
}

console.log(obj.fun);

if(obj.fun !== undefined){
    console.log('存在对象方法');
}

//in方法
console.log('fun' in obj);//返回时true

对对象的增删改查

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
var obj = {
    name : '鲁迅',
    age : 3213123,
    fun:function () {
        return 213;
    }
}

//如何为对象添加属性或方法
obj.time = '2017年12月30日';
console.log(obj);//增加的time

obj.fun1 = function () {
    return 321;
}
console.log(obj);//增加的fun1

//如何为对象修改属性或方法
obj.name = '孙悟空';
console.log(obj);//修改了孙悟空

obj.fun = function () {
    return 22;
}
console.log(obj.fun());

//如何delete删除对象
delete obj.fun;
delete obj.name;
delete obj.age;
console.log(obj);//输出{ time: '2017年12月30日', fun1: [Function] }
//对象属性,方法被删除没有了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注