object几个对象常用方法

自己随手写的,有问题还请多多指教。

defineProperty

劫持变量的set和get方法

let value = "abc";
let timer;
const input = document.getElementsByTagName("input")[0];
const p = document.getElementsByTagName("p")[0];
p.innerHTML = value;
input.value = value;
Object.defineProperty(p, "value", {
    get() {
        return value;
    },
    set(val) {
        value = val;
        p.innerHTML = val;
    }
})
input.onkeyup = function(e) {
    clearTimeout(timer);
    timer = setTimeout(function() {
        p.value = e.target.value;
    }, 1000)
}

assign

将第二个对象的属性合并到第一个对象里面,对象深拷贝可以考虑。(一维对象可以考虑拷贝)

const obj = { name: "123" };
let a = Object.assign({}, obj);
let b = Object.assign({}, obj);

cerate

方法创建一个新对象,是新对象的proto 指向传入目的对象

const obj = {
    name: "wzm",
    fild: {
        one: "1",
        two: "2"
    }
}
let newObj = Object.create(obj);

也可以实现原型链的继承

function person() {
    this.sex = "man";
}
person.prototype.getSex = function() {
    console.log(this.sex);
}

function student() {

}

function teacher() {

}
student.prototype = new person();
student.prototype.constructor = student;//重写函数的原型对象时候 为了严谨要添加构造函数;原型对象生成一个constructor属性,指向原型所在函数 
这个属性作用 记录的就是对象的构造器,里面存的就是构造函数。
teacher.prototype = Object.create(person.prototype);
teacher.prototype.constructor = teacher;
let stu = new student();
let teach = new teacher();

二者实现方式的区别:new会继承父函数构造函数身上的属性和方法 Object.create 只会继承父函数原型上的方法和属性

你可能感兴趣的:(object几个对象常用方法)