当前位置: 首页 > news >正文

javascript的对象

简介:

JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。

一.对象的类型

  • 本地对象:就是ECMA定义好的一些对象,包含Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。
  • 内置对象:只有Global和Math两个对象,其实可以理解为是包含在本地对象中的。
  • 宿主对象:需要依赖浏览器等宿主环境的对象,简单点就是我们自定义的各种对象,包括BOM和DOM对象。

二.对象的创建、继承

  1. 字面量形式
    var obj = {name:"hello",age:18}

  2. 使用new关键字
    var obj = new object() obj.name = "hellow"; obj.age = 19;

  3. 使用ES5的object.create()

    object.create()是一个静态的函数,参数一:要继承的对象;参数二:可选,用以对对象的属性做进一步的描述

     var obj = object.creat({name:"hello",age:"20"}) //obj继承了name和age属性

4.工厂模式创建
   function creatobj (name,age){

     var obj = new object();

     obj.name = name;

     obj.age = age; return obj;

     }

     var o1 = creatobj("hello",21);

     var o2 = creatobj("hello",22);
          优点:能够重复创建同类对象,提高效率
         缺点:消耗内存

5.构造函数创建
     function Person(name,age) {

      this.name = name;

      this.age = age;

      }

     var per1 = new Person("hello",23);

     var per2 = new Person("world",24);

6.原型模式
    function Person(name,age){

     this.name = name; this.age = age;

    }

     Person.prototype.showName =function(){

      alert(this.name);

      }

     var pe = new Person("pro",25); pe.showName(); //25

7.混合模式

三.属性查询

var obj = {name:"hello"}

  1. 使用in运算符
    "name" in obj;
    如果对象的自有属性或者继承属性包含该属性就返回true;否则返回false。

2.hasOwnPreperty()
obj.hasOwnPrerperty("name");
如果是对象的自有属性就返回true;否则false

3.propertyIsEnumerable()
obj.propertyIsEnumerable("name" )
只检测这个属性是自有属性并且是可枚举的时候才返回true;否则返回false

4.使用"!=="
obj.name !== undefined //true 存在该属性;false 不存在该属性
但是存在一种特殊的场景只能使用in运算符而不能使用!==;如果var o = {x:undefined}的时候

转载于:https://www.cnblogs.com/tyy1992/p/6229314.html

相关文章:

  • 西门子200实现远程监控和程序调试
  • 简单提高数据库查询效率的办法
  • 记录:CentOS7.2配置LNMP环境记录
  • FLASH遮挡DIV浮动层解决方案兼容IE FF Chrome
  • Linux虚拟机中配置JDK环境变量
  • 常用的集合
  • 中文输入法与React文本输入框的问题与解决方案
  • 树莓派:光阴的故事
  • [转]MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN
  • 追踪记录每笔业务操作数据改变的利器——SQLCDC
  • JS读书心得:《JavaScript框架设计》——第12章 异步处理
  • 2017-1-6基础
  • nodejs npm常用命令
  • Bootstrap的竞争对手Zurb Foundation
  • centos7部署PaaS平台环境(mesos+marathon)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Angular4 模板式表单用法以及验证
  • canvas 高仿 Apple Watch 表盘
  • const let
  • eclipse(luna)创建web工程
  • hadoop集群管理系统搭建规划说明
  • IP路由与转发
  • JavaScript 奇技淫巧
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Netty 4.1 源代码学习:线程模型
  • supervisor 永不挂掉的进程 安装以及使用
  • vue2.0项目引入element-ui
  • vue-cli在webpack的配置文件探究
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 码农张的Bug人生 - 见面之礼
  • 算法-图和图算法
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 飞书APP集成平台-数字化落地
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (12)目标检测_SSD基于pytorch搭建代码
  • (day6) 319. 灯泡开关
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (一)VirtualBox安装增强功能
  • (转)memcache、redis缓存
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转载)Linux 多线程条件变量同步
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 反编译_.net反编译的相关问题
  • .Net(C#)自定义WinForm控件之小结篇
  • .netcore如何运行环境安装到Linux服务器
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @GetMapping和@RequestMapping的区别
  • @取消转义
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择