• 搞定JS面向对象


    • for(var key in obj) {}
      

      注意: 返回的是能通过对象访问的,可枚举的属性,既包括实例属性也包括原型中的属性

    • obj.hasOwnProperty(key)
      

      注意: key属性是obj对象的实例属性才会返回true,否则返回false

    • Object.getPrototypeOf(obj);   //此方法是Object对象的,用来获取获取obj对象的原型
      
    • //确定原型和实例之间的关系
      obj instanceof 原型对象 /true false
      原型对象.isPrototypeOf(实例); //方法属于原型对象的
    • var keys = Object.keys(obj);
      

       注意: 如果obj是实例对象,返回的是所有的实例属性,keys是返回的实例字符串的数组形式.如果是原型则返回所有的属性字符串数组

    • var keys = Object.getOwnPropertyNames(obj);
      

       得到所有的实例属性,无论它是否可枚举.

    原生对象的原型

      原生引用类型:Object Array String等,在其构造函数的原型上定义了方法.通过原生对象的原型,不仅可以取得所有默认方法的引用,而且也可以定义新方法.

    如:

    String.prototype.startsWidth = function(text) {
    	return this.indexOf(text) ==0;
    }
    var msg = "Hello World";
    alert(msg.startsWidth("Hello"));
    

    继承

     接口继承

    现讲一下原型 构造函数 实例之间的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个之下过原型对象的内部指针. 

    一个实例的原型对象是另一个实例对象的话,就构成了继承关系.

     原型链的缺点:包含引用类型值的原型属性会被所有实例共享.

    解决原型链缺点的办法:在子类的构造函数中调用超类的构造函数.通过 超类.call(this)使子类有自己的属性

    未完待续...

  • 相关阅读:
    使用element-ui的table组件时,渲染为html格式
    vue-quill-editor富文本编辑器,添加了汉化样式却汉化不了
    MySQL版本问题导致的SQLException
    MySQL中 ORDER BY 与 LIMIT 的执行顺序
    MySQL 测试数据批量导入
    CentOS 7 安装 Maven
    CentOS 7 安装 Gradle
    CentOS 7 安装 RabbitMQ
    CentOS 7 安装 Tomcat 8.5.43
    CentOS 7 配置网络
  • 原文地址:https://www.cnblogs.com/learning-/p/6615920.html
Copyright © 2020-2023  润新知