<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. 大厂面试过程复盘(微信/阿里/头条均拿offer,附答案篇)

    背景 本人前端,3年经验,由于个人的原因,决定跳槽,于是大概3月开始找工作,总历时大概2个月,面试了微信/阿里/头条,三家都拿到了offer,来分享一下面经. 问题比较多,而且很多面试题都是跟个人项目 ...

  2. Charles 安装证书后依旧抓取不到https请求的解决方案

    1.打开charles——>help——>SSL proxying——>Install Charles Root Certificate 证书安装后,抓取https的包 2.查看Pr ...

  3. Linux切换超级管理员root用户

    Ubuntu用$标志表示你现在处于普通用户,#表示超级用户. 普通用户会有限制,想从普通变成超级用户,可以输入 su 或 su - 命令,要求你输入密码, 你如记得密码就可以直接输入,再Enter即可 ...

  4. 【Spring】Bean的LifeCycle(生命周期)

    菜瓜:水稻,上次说Bean的LifeCycle,还没讲完 水稻:啥?说人话? 菜瓜:spring,bean,生命周期 水稻:哦哦,下次直接说人话.说正事,先从BeanFactory.Applicati ...

  5. 在Java虚拟机上班是一种怎样的体验?

    228 人赞同了该回答 利益相关,匿了! JVM公司里面线程众多,派系林立,尤其是执行引擎那波人,因为是核心部门,经常diss别的部门. 428 人赞同了该回答 不请自来. 其实在JVM工作没有你们想 ...

  6. 尚硅谷spring 事物管理

    接下来我们重点来学习spring中的事务管理 接下来我们通过代码来实现 spring实现事物我们采用aop的方式来实现 获得连接和手动设置事物相当于@before标注的前置通知,conn.commit ...

  7. 学习Java的Day02

    知识点 数组: 一维数组   声明: 类型[] 数组名;([] 在前后没有影响,一般写在名称前.) 创建数组  数组名 =  new 类型[数组长度]. 数组索引从0开始.获取数组长度:数组名.len ...

  8. android studio gradle的坑

    国产模拟器别国外的好用.非常傻瓜.有人推荐夜神. 之前用geom,下载Android都得半天.     每次做开发前,配置环境都要搞半天.尤其是想快速学习一个技术的话,光装环境都让人放弃了.最近想看一 ...

  9. 【总结】LINQ查询基本操作列表

    每个LINQ查询都以from子句开始,from子句包括以下两个功能. 指定查询将采用数据源. 定义一个本地变量,表示数据源中单个元素. string[] values = { "中国&quo ...

  10. JS中字符串和数组的相互转化

    题目:利用var s1=prompt("请输入任意的字符串:") ,可以获取用户输入的字符串,试编程将用户输入的字符串“反转”,并且将字符串输出. 思路:字符串对象的方法中并没有实 ...