对象转object_「心动」你有对象吗?

d478b8298ff8a5defd663518070ba256.png
他是一个自由的人、活在云中、死在风里

【零】我不知道什么是对象、我没碰过对象

  • 实例化对象
let object = new Object();
let obj = {};//这么简洁、为什么要用上面那种方式呢
  • 设置调用对象的属性方法
obj.name = '法外狂徒张三君';
obj.age = 23;
obj['type'] = '单身狗';
obj.steal = function () {
    console.log("get something")
};
console.log(obj.name);//法外狂徒张三君
console.log(obj.age);//23
obj.steal();//get something
  • 删除对象的属性

delete操作符、只能操作object

let book = {
    page: 2233,
    price: 20,
    cbs: 'buKe',
};
console.log(book);//{ page: 2233, price: 20, cbs: 'buKe' }
delete book.cbs;
console.log(book);//{ page: 2233, price: 20 }

【壹】旱的旱死、涝的涝死

//对象遍历 for in
let word = {
    wd1: '回首掏',
    wd2: '哟,鬼刀一开看不见',
    wd3: '走位走位',
    wd4: '手里干,哟,难受'
};
for (let item in word) {
    console.log(word[item])
    // 回首掏
    // 哟,鬼刀一开看不见
    // 走位走位
    // 手里干,哟,难受
}

【贰】她段位太高、我玩不过

  • constructor,对象的构造器(构造函数)
let nullObj = {};
console.log(nullObj.constructor);//[Function: Object]
let nullArr = [];
console.log(nullArr.constructor);//[Function: Array]
  • hasOwnProperty(string),检测对象是否拥有某个属性
let computer = {
    cpu: '3900x',
    gpu: "gtx2080TI"
};
//param: property name
let r1 = computer.hasOwnProperty('cpu');
let r2 = computer.hasOwnProperty('mem');
console.log(r1, r2);//true false
  • isPrototypeOf(Object),检查该对象是否是传入对象的原型(接盘侠!!)
let objProtoPer = {
    name: '曹孟德',
    motto: '吾好他人之妻',
};
let Person = Object.create(objProtoPer);
let r3 = objProtoPer.isPrototypeOf(Person);
console.log(r3);//true
  • propertyIsEnumerable,检查属性是否可被枚举(for in)能遍历
let phone = {
    name: 'xxx',
    size: 'xxx',
};
console.log(phone.propertyIsEnumerable('constructor')); //false
console.log(phone.propertyIsEnumerable('name')); //true

【叁】她存着我太多东西了

用对象和函数模拟实现window下的localStorage功能。包括常用的getItem、setItem、clear、removeItem等方法。

//LocalStorage 类
function LocalStorage() {
    //存储数据的Object
    this.localStorage = {};
    //存储长度
    this.length = 0;
    //设置数据
    this.setItem = function (key, value) {
        this.localStorage[key] = value.toString();
        this.updateLength()
    };
    //根据key获取数据
    this.getItem = function (key) {
        if (this.localStorage.hasOwnProperty(key)) {
            return this.localStorage[key]
        }
    };
    //清除所有数据
    this.clear = function () {
        this.localStorage = {};
        this.updateLength()
    };
    //更加key移除数据
    this.removeItem = function (key) {
        if (this.localStorage.hasOwnProperty(key)) {
            delete this.localStorage[key];
            this.updateLength()
        }
    };
    //更新数据项长度
    this.updateLength = function () {
        let count = 0;
        for (let item in this.localStorage) {
            count++
        }
        this.length = count
    };
}
let store = new LocalStorage();
store.setItem("name", "张三");
store.setItem("age", "23");
store.setItem("event", {});
console.log(store.localStorage, store.length);
//{ name: '张三', age: '23', event: '[object Object]' } 3

store.removeItem("age");
console.log(store.localStorage, store.length);
//{ name: '张三', event: '[object Object]' } 2

console.log(store.getItem("event"));
//[object Object]

store.clear();
console.log(store.localStorage);//{}

【肆】所以她觉得我多余就去掉了

let arr = [1,2,3,3,4,1,4,5,7,8,2,78,9,10] ;
//对象的键是唯一的,利用这个属性数组去重
function deduplication(arr) {
    //定义一个空对象存数据
    let arrObj = {};
    //将对象转数组
    let _arr = [];
    for (let i = 0, len = arr.length; i < len; i++) {
        arrObj[arr[i]] = arr[i]
    }
    for (let item in arrObj) {
        if (arrObj.hasOwnProperty(item)) {
            _arr.push(item)
        }
    }
    return _arr
}
console.log(deduplication(arr));

【伍】爷青结

//封面图来自网络、侵删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值