美文网首页
学习笔记7-对象

学习笔记7-对象

作者: kjiwu | 来源:发表于2020-02-16 11:09 被阅读0次

    对象

    对象,一种容器(聚合或复杂数据类型)

    对象属性枚举

    属性的顺序是无序的

    1. for……in
        const obj = { a: 1, b: 2, c: 3 };
        for (let p in obj) {
            if (!obj.hasOwnProperty(p)) continue;
            console.log(`${p}:${obj[p]}`);
        }
    

    for……in循环不会枚举符号类属性

    1. Object.keys
      Object对象提供的一种枚举字符串属性的方法,并返回一个数组
        const obj = { a: 1, b: 2, c: 3 };
        Object.keys(obj).forEach(p => console.log(`${p}:${obj[p]}`));
    

    Object.keys也不会枚举符号类属性

    类的创建和实例化

        class Shape {
            constructor(...props) {
    
            }
        }
    
        let shape = new Shape();
    

    JavaScript类中没有访问权限的限制
    类即是函数,类只不过是ES6中提供的一个语法,实际类还是函数
    类中使用this,this指的是引用方法被调用时所绑定的实例

        class ES6Class {}
        function ES5Class() {}
        console.log(typeof ES6Class); //function
        console.log(typeof ES5Class); //function
    

    原型

    • 每个函数都有一个prototype属性
    • 使用new创建实例时,会将原型对象存储到自己的proto属性中

    原型的动态调度

    当试图访问对象的某个属性或方法是,如果它不存在于当前对象中,JavaScript会检查它是否存在于对象原型中。

        class Shape {
            constructor(...props) {
    
            }
    
            area() {
                console.log('area function');
            }
        }
    
        const shape = new Shape();
        console.log(shape.area === Shape.prototype.area); // true
        shape.area(); //调用的是原型中area方法
    
        shape.area = () => console.log('my area');
        shape.area(); //调用的是我们新赋值的area方法
    

    静态方法

    静态方法不于实例绑定,它和类相关联

        class Shape {
            static showInfo() {
                console.log('this is Shape class');
            }
        }
    
        Shape.showInfo();
    

    继承

        class Shape {
    
        }
    
        class Rectangle extends Shape {
            constructor() {
                super();
            }
        }
    

    extends关键字,表示Rectangle继承自Shape
    super函数,父类的构造器,子类的构造函数必须调用这个方法

    原型链

    如果一个方法没有在对象原型中找到其定义,它就会检查原型的原型,这样就形成了一个原型链;JavaScript会沿着原型链一直找下去,如果没有找到,最终程序会报错。

    多态

    多态,一个实例不仅是它自身类的实例,也可以被当做它的任何父类的实例来使用.
    JavaScript中所有对象都是Object的实例。

    相关文章

      网友评论

          本文标题:学习笔记7-对象

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