<script>
        // 对象是属性的无序集合,每个属性都是一个名/值对. 属性名称是一个字符串.
        // 对象种类
        // 内置对象(native object)是由ECMAScript规范定义的对象或类。例如,数组、函数、日期和正则表达式都是内置对象
        // 宿主对象(host object)是由JavaScript解释器所嵌入的宿主环境(比如Web浏览器)定义的, 常见的宿主对象有window, document等
        // 自定义对象(user-defined object)是由运行中的JavaScript代码创建的对象。
        // 对象的创建
        // 对象直接量是由若干名/值对组成的,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个对象用花括号括起来。
        // 属性名可以是JavaScript标识符(即变量符号,如a,b,c)也可以是字符串。
        // 属性的值可以是任意类型的JavaScript表达式,表达式的值(可以是基本数据类型的值也可以是对象类型的值)就是这个属性的值。
        //方法一
        // let empty = {}  //可以是没人任何属性的对象
        
        // let person = {
        //     name : "小小",
        //     "name" : "小小",  //加引号定义也可以 ,调用直接 person.name(不加引号,加引号就错了)
        //     height : "175cm",
        //     weight : "50",
        //     eating : function(){
        //         console.log("会吃饭");
        //     }
        // }              //还可以加函数
        // console.log(person);  //{name: "小小", height: "175cm", weight: "50", eating: ƒ}
        // console.log(person.name);    //小小
        // //调用对象里面的属性 对象名.属性
        // person.eating();      //会吃饭
        //调用对象里面的函数。直接对象名.函数名()
        // let book = {
        //     "main title" : "JavaScript",  
        //     //属性名字有空格的,必须用字符串表示
        //     "sub - title" : "对象课程",
        //     //属性名字里有连字符的,必须用字符串表示
        //     "for" : "学员",
        //     //“for”是保留字,必须用引号
        //     author : {  //该属性的值是一个对象
        //         name : "aiai"
        //     }
        // }
        // console.log(book);  //{main title: "JavaScript", sub - title: "对象课程", for: "学员", author: {…}}
        // console.log(book.author.name);   //aiai
        //调用对象里面的对象属性里面的属性  就一直点点点下去
        //方法二
        //通过关键字new,后面跟随一个函数调用。这里的函数称作构造函数,构造函数用以初始化一个新创建的对象
        //JavaScript语言核心中的原始类型都包含内置构造函数
        //内置对象
        // let oj = new Object();   //创建一个空对象 ,和{}一样
        // let date = new Date();    //创建一个表示当前时间的Date对象
        // let array = new Array();   //创建一个空数组,和[]一样
        //自定义对象
        // function boy(){     //构造函数
        //     name = "",      //私有属性(暂时不了解)
        //     //this代表实例化后的对象
        //     this.sex = "男",
        //     this.age = 25,
        //     this.cook = function(){
        //         console.log("会做饭");
        //     }
        // }
        // let gb = new boy();    //创建对象 gb是一个对象,实例化对象
        // console.log(gb.sex);   //男
        // gb.cook();             //会做饭
        //访问对象:
        //方法一。点调用(.)   上诉说过了
        //方法二。中括号([])
        // let oj = {
        //     name : "xiao",
        //     "1" : 1,
        //     "name 1" : "dddd"
        // }
        // console.log(oj["1"]);   //1
        // console.log(oj["name 1"]);  //dddd
        // console.log(oj["name"]);    //xiao
        // //当然不加引号的定义也可以用[]访问
        // //设置
        // oj["name 1"] = "今天是星期日";
        // console.log(oj["name 1"]); //今天是星期日
        // oj.name = "heihei";
        // console.log(oj.name);   //heihei
        //对象常用操作
        //删除对象的属性
        //delete运算符可以删除对象的属性
        // let oj = {
        //     a : "1",
        //     b : { x : 1}
        // }
        // let ob = oj.b;
        // console.log(oj.b);  //{x: 1}
        // delete oj.b;
        // console.log(oj.b);  //undefined
        // console.log(ob);    //{x: 1}
        //delete只是断开属性和宿主对象的联系,而不会去操作内存中对象的属性的值的存在与否
        // 判断某个属性是否存在于某个对象中
        // 可以通过in运算符、hasOwnProperty() 方法
        // let oj = {
        //     a : "1",
        //     b : { x : 1}
        // }
        // console.log( "a" in oj);   //true
        // console.log("c" in oj);    //false
        // console.log( oj.hasOwnProperty("a"));  //true
        // console.log( oj.hasOwnProperty("c"));  //false
        //枚举对象属性
        //除了检测对象的属性是否存在,我们还会经常遍历对象的属性, 通常使用for/in循环遍历
        // for/in循环可以在循环体中遍历对象中所有可枚举的属性(包括自有属性和继承的属性)
        // 对象继承的内置方法不可枚举的,但在代码中给对象添加的属性都是可枚举的
        // for( o in oj){
        //     console.log(o);  //a  b
        // }  
        // console.log(o.propertyIsEnumerable("toString")); //false
        //在JavaScript中对象的属性有两种, 分别是数据属性和访问器属性.
        // //数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4 个描述其行为的特性
        // 程序员无法访问到的
        // [[Configurable]]:表示能否通过delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。像前面例子中那样直接在对象上定义的属性,它们的这个特性默认值为true。
        // [[Enumerable]]:表示能否通过for-in 循环返回属性。像前面例子中那样直接在对象上定义的属性,它们的这个特性默认值为true。
        // [[Writable]]:表示能否修改属性的值。像前面例子中那样直接在对象上定义的属性,它们的这个特性默认值为true。
        // [[Value]]:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined
        //访问器属性  允许用户在赋值或取值都经过预先设定的函数,从而实现内部属性的那一种特效结果
        //get / set
        //获取对象属性的特性Object.getOwnPropertyDescriptor()
        // let oj = {
        //     a : "1",
        //     b : { x : 1}
        // }
        // let c = Object.getOwnPropertyDescriptor(oj,"a");
        // console.log(c);   //{value: "1", writable: true, enumerable: true, configurable: true}
        // //设置对象属性的特性Object.defineProperty()
        // //传入要修改的对象、要创建或修改的属性的名称以及属性描述符对象:
        // Object.defineProperty(oj, "a" ,{
        //     writable:false
        // })
        // oj.a = "333";
        // let cg = Object.getOwnPropertyDescriptor(oj,"a");
        // console.log(cg);  //{value: "1", writable: false, enumerable: true, configurable: true}
        // console.log(oj.a);  //1
    </script>

JavaScript 对象的创建和操作的更多相关文章

  1. JavaScript面向对象—对象的创建和操作

    JavaScript面向对象-对象的创建和操作 前言 虽然说在JavaScript编程语言中,函数是第一公民,但是JavaScript不仅支持函数式编程,也支持面向对象编程.JavaScript对象设 ...

  2. JavaScript对象的创建之使用json格式定义

    json: javascript simple object notation. json就是js的对象,但是它省去了xml中的标签,而是通过{}来完成对象的说明. 定义对象 var person = ...

  3. JavaScript对象的创建

    原文 简书原文:https://www.jianshu.com/p/6cb1e7b7e379 大纲 前言 1.简单方式创建对象的方法 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对 ...

  4. JavaScript对象的创建之基于构造方法+原型方式

    为了解决原型所带来的问题,此处需要通过组合构造方法和原型来实现对象的创建,将属性在构造方法中定义,将方法在原型中定义.这种有效集合了两者的优点,是目前最为常用的一种方式. function Perso ...

  5. javascript 对象的创建与继承模式

    针对JS高级程序设计这本书,主要是理解概念,大部分要点源自书内.写这个主要是当个笔记加总结 存在的问题请大家多多指正! 6.1理解对象 创建对象的两个方法(暂时) //第一种,通过创建一个Object ...

  6. JavaScript 对象的创建

    Object类型是JavaScript中使用最多的一种类型.创建Object实例的方式有多种,接下来一一列举. 1. Object构造函数 person1的friends属性修改影响了person2的 ...

  7. JavaScript对象的创建之基于原型方式

    原型内存模型介绍 原型是javascript中非常特殊的一个对象,当一个函数创建之后,会随之就产生一个原型对象. 当通过这个函数的构造函数创建一个具体的对象之后,在这个具体的对象中就会有一个属性指向原 ...

  8. javascript 对象的创建,引用,释放,删除方法

    1.用函数构造 A.声明时同时设置属性和方法 function func(){  this.name = "myname";  this.say = function(){aler ...

  9. javascript对象的创建--相对java 怎样去创建了"类"i以及实例化对象

    由于javascript没有java那么多基本类型,同时也没有提供class这个东西,那么我们想实现javascript的对象创建应该怎么办呢,我简单地从w3c提供的课件中提取了一下几种方法: 一.工 ...

随机推荐

  1. Dart Memo for Android Developers

    Dart Memo for Android Developers Dart语言一些语法特点和编程规范. 本文适合: 日常使用Kotlin, 突然想写个Flutter程序的Android程序员. Dar ...

  2. 2019-02-15 python接口图灵机器人(简单好玩)

    import requests import json def Run(text): url = "http://openapi.tuling123.com/openapi/api/v2&q ...

  3. Python爬虫小白入门(七)爬取豆瓣音乐top250

      抓取目标: 豆瓣音乐top250的歌名.作者(专辑).评分和歌曲链接 使用工具: requests + lxml + xpath. 我认为这种工具组合是最适合初学者的,requests比pytho ...

  4. vue父路由高亮不显示

    vue父路由高亮不显示 首页和考试中心作为父路由,点击时发现不高亮,是因为路由配置有问题 因为首页和考试中心已经重定向到homepage和tpersonal-data这两个路由,当点击首页和考试中心的 ...

  5. 打个总结:Web性能优化

    前段时间优化一个公司历史老项目的Web性能,却引出了一系列的问题,让我反思良多. 我通过Chrome的Lighthouse工具可以看出一些性能参数和问题反馈,我逐一对其进行优化. 根据资源请求的不同, ...

  6. 从零开始学习Prometheus监控报警系统

    Prometheus简介 Prometheus是一个开源的监控报警系统,它最初由SoundCloud开发. 2016年,Prometheus被纳入了由谷歌发起的Linux基金会旗下的云原生基金会( C ...

  7. 利用synchronized解析死锁的一种形成方式

    代码 import ... public class Test{ private static Object o1=new Object(); private static Object o2=new ...

  8. robot framework使用小结(二)

    robot framework关键字驱动采用分层,结合Template做成数据驱动 我个人觉得不管是关键字驱动还是数据驱动,都是基于模块(或者是函数)的概念 新建测试案例baidu02,添加Libra ...

  9. ArrayList类的使用

    ArrayList常用类方法 (1)添加元素 public boolean add(E element) 在集合末端添加一个元素 public void add(int index,E element ...

  10. 07 . Prometheus监控Memcached并配置Grafana

    List CentOS7.3 prometheus-2.2.1.linux-amd64.tar.gz redis_exporter-v0.30.0.linux-amd64.tar.gz ` 节点名 I ...