美文网首页
object几个对象常用方法

object几个对象常用方法

作者: 想回到童年 | 来源:发表于2018-04-24 10:42 被阅读0次
    自己随手写的,有问题还请多多指教。

    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几个对象常用方法

          本文链接:https://www.haomeiwen.com/subject/tsnllftx.html