Object 对象与方法


JavaScript 对象是键值对的容器
键值对通常写法为 name : value (键与值以冒号分割)。
键值对在 JavaScript 对象通常称为 对象属性。

  1. 访问对象属性
    两种方式: obj.property 或 obj [“property”]
  2. 访问对象方法
    obj.property()
  3. 对象object循环遍历

.each()可以遍历数组和对象

 $.each(obj,function(key,value){
   console.log("键:"+key+";"+"键值:"+obj[key]);
})

for…in,for…of

for(key in obj){
    console.log("姓名:"+key+";"+"对应值:"+obj[key]);
             }
for(val of arr){ //类似数组对象
    console.log("对应值:"+val );
 }

for…of
ES6 方法。for…of 循环可以遍历数组、Set 和 Map 结构、某些类似数组的对象(比如 arguments 对象、DOM NodeList 对象)、Generator 对象,以及字符串。

object返回迭代器的方法

entries() values() keys()
Object.keys(obj)返回数组,内容是可直接枚举的属性

for(let key of Object.keys(obj)){
    console.log(key,obj[key]);
}

Object.values()返回一个数组,内容自身的(不含继承的)所有可遍历属性的键值 ES6方法。

for(let value of Object.values(obj)){
    console.log(value);
}

Object.entries() 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对数组 ES6方法。

for(let [key,value] of Object.entries(obj)){
    console.log(key,value);
}

Reflect.ownKeys()返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 还是字符串,也不管是否可枚举。ES6方法。

for(let key of Reflect.ownKeys(obj)){
    console.log(key,obj[key]);
}

对象转换数组

扩展运算符(…)

扩展运算符(…)也可以将某些数据结构转为数组
arguments对象的转换

 function foo() {
            var args = [...arguments];
        }

NodeList对象的转换

[...document.querySelectorAll('p')]

ES6

  • Array.prototype.slice.call(obj)
    借用了数组原型中的slice方法,返回一个数组。slice方法的内部实现:
Array.prototype.slice = function (start, end) {
            let result = new Array();
            start = start || 0;
            end = end || this.length;  //使用call之后this指向了类数组对象 
            for (let i = start; i < end; i++) {
                result.push(this[i]);
            }
            return result;
        }

通用的转换函数

 var toArray = function (Ob) {
            try {
                return Array.prototype.slice.call(Ob);
            } catch (e) {
                var arr = [];
                for (var i = 0, len = s.length; i < len; i++) {
                    arr[i] = s[i];
                }
                return arr;
            }
        }
        let object1 = {
            '0': 3,
            '1': 13,
            '2': 23,
            '3': 33,
            'length': 5,
            'name': 330
        }
        console.log(toArray(object1) + '      ' + 'Array.prototype.slice.call(obj)');
  • Array.from()
    将两类对象转为真正的数组:类数组对象和可遍历(iterable)对象(包括ES6新增的数据结构Set和Map)
 let object3 = {
            '0': 3,
            '1': 13,
            '2': 23,
            '3': 33,
        };
 
        function* createIterator(obj) {
            for (let value in obj) {
                yield obj[value];
            };
        };
 
        let iterator = createIterator(object3);  //
        console.log(iterator);
        let arr3 = Array.from(iterator);
        console.log(Array.from(object3))// [3, 13, 23, 33]
 
        // 默认情况下,开发者定义的对象都是不可迭代对象,但如果给 Symbol.iterator 属性添加一个生成器,则可以将其变为可迭代对象
        obj[Symbol.iterator] = function* () {
            for (let value in this) {
                yield this[value]
            }
        }
        let arr = Array.from(obj)
        // [3, 13, 23, 33]
 
        // 判断对象是否为可迭代对象的方法
        typeof obj[Symbol.iterator] === 'function'
        //把NodeList对象转换为数组,然后使用数组的forEach方法
        let ps = document.querySelectorAll('p');
        Array.from(ps).forEach(p => {
            console.log(p);
        });
        //只要是部署了Iterator接口的数据结构,Array.from都能将其转换为数组
        Array.from('zjl');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 查找对象所在库 2 根据备注查找对象 3 查找指定时间内修改过的对象 可内嵌入pb工具栏,可向pb发送消息打开指定对象 打开对象功能目前只支持70以上版本。 内嵌打开时可根据当前pb版本,查找最进一次打开的工程,并显示该工程的所有对象(支持70以上版本)。 图1 http://album.hi.csdn.net/app_uploads/liubocy/20081215/031936281.p.gif?d=20081215032033250 图2 http://album.hi.csdn.net/app_uploads/liubocy/20081215/031955062.p.gif?d=20081215032107375 图3 http://album.hi.csdn.net/app_uploads/liubocy/20081215/032010031.p.gif?d=20081215032125453 打开对象的功能是通过设置pb工具栏的Command Line语句,再向pb发送消息点击工具栏。 Command Line最多支持128个字节,所以尽量把pbl放在文件夹层级少的地方。 如果生成的语句大于128字节(没超出,发pbl+对象名的指令;如果超出,只发对象名的指令), 那么如果存在同名对象,就始终只能打开其中一个了。 pb6.X版本估计是不支持Command Line语句。有兴趣的朋友可以测试下 //打开app Application:///D|/PbObjFind/pbobjfind.pbl&action=open&entry=pbobjfind //打开dw DataWindow:///D|/PbObjFind/pbobjfind.pbl&action=open&entry=d_recentpbw //打开中文文件夹中pbl里的窗口 Window:///D|/Work/%b2%e2%ca%d4%bc%bc%ca%f5/%bc%b4%b4%f2%bc%b4%cd%a3/demo.pbl&action=open&entry=w_demo 图4 http://album.hi.csdn.net/app_uploads/liubocy/20081215/034733546.p.gif?d=20081215034744812

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值