JavaScript 对象的创建和操作

<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>
(0)

相关推荐

  • 深入理解JavaScript面向对象的程序设计(一)——对象的创建

    JavaScript面向对象的程序设计(一)--对象的创建 目录 JavaScript面向对象的程序设计(一)--对象的创建 5.1 三个属性(三个指针) 5.2 理解原型对象 5.3 读取对象的属性 ...

  • Nice!JavaScript基础语法知识都在这儿了

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star ⭐⭐⭐⭐⭐转载请注明出处!⭐⭐⭐⭐⭐ 链接:https:/ ...

  • JavaScript 的 对象

    学习目标:能够说出为什么需要对象 能够使用字面量创建对象 能够使用构造函数创建对象 能够说出new的执行过程 能够遍历对象 1.对象 1.1万物皆对象,对象是一个具体的事物 在程序里面,一个服务器,一 ...

  • JavaScript连载19-this关键字、对象的增删改查

    一.this的指向 1.普通函数执行,内部this是指向全局对象window; 2.函数在定义的时候this是不确定的,只有在调用的时候才可以确定: 3.如果函数作为一个对象的方法,被该对象所调用,那 ...

  • JavaScript 基础二

    函数 函数:函数就是封装了一段可以重复执行的代码块. function fn(){ console.log('我是函数') } fn(); function getSum(a,b){ return a ...

  • JavaScript基础总结(一)

    值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol.注:Symbol 是 ES6 引入了一种新的原始 ...

  • UG编程径向切削驱动方法,此加工方法可用于创建清理操作

    径向切削驱动方法允许您使用指定的"步距"."带宽"和"切削类型"生成沿着并垂直于给定边界的"驱动轨迹".此驱动方法可用于 ...

  • 类与对象的创建

    类与对象的创建 一个项目应该只有一个main方法 无论一个类多么牛逼,它也只有属性和方法 this代表当前这个类 类是抽象的(把像的东西抽出来,这一类事物共同具有的,例如:人,都有姓名,性别,会吃饭, ...

  • JavaScript 对象所有API解析【2021版】

    前端技术优选 今天以下文章来源于若川视野 ,作者若川视野 若川视野建议工作5年内的前端人关注.我是若川,<学习源码整体架构系列>作者,知乎.掘金等平台的文章累计超过百万阅读.致力于前端开发 ...

  • 如何使用JavaScript和Express创建区块链 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 有人问我是否可以使用JavaScript来构建BlockChain应用程序,并且肯定有可用的资源来构建这样的应用程序.本文中向大家介绍其实这并没有那么复杂.这就像 ...

  • 【8/25】使用抽象工厂模式(Abstract Factory Pattern) 封装页面对象的创建过程

    这是<小游戏从0到1设计模式重构>系列内容第8篇,所有源码及资料在"程序员LIYI"公号回复"小游戏从0到1"获取. 看完了三姐妹中的大姐.二姐,最 ...

  • C 类的定义和对象的创建

    类和对象是 C 的重要特性,它们使得 C 成为面向对象的编程语言,可以用来开发中大型项目,本节重点讲解类和对象的语法,如果你对它们的概念还不了解,请先阅读<C 类和对象的概念>. 类是创建 ...

  • JavaScript优雅写法及骚操作

    前端技术优选 今天 以下文章来源于掘金开发者社区 ,作者NeverSettle 掘金开发者社区掘金,一个帮助开发者成长的技术社区 昨天看权威指南的时候看到一个个人觉得很优雅的写法,便想着记录一下(我的 ...

  • 从零开始学Java(十一)Java对象的创建及使用

    ✔上一篇Java零基础系列文章我们说到了Java中的面向对象,今天这篇文章主要围绕下边几个知识点: Java对象的创建和使用方法 为什么要画内存图?(非常重要) 程序在什么情况下会出现空指针异常呢? ...