<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. ESP8266服务器模式 发送数据和接收数据 模板1

    功能如下: 1.将客户端发来的数据转发到串口:2.串口数据转发给所有客户端3.可连接4个客户端4.可设置静态IP地址5.指示灯闪烁表示无客户端连接,灯亮代表有客户端连接 /** 功能: 1.将客户端发 ...

  2. cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech

    cc32b_demo-32dk2j_cpp_纯虚函数与抽象类2-txwtech //纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要 ...

  3. easymock笔记2

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest. EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final ...

  4. npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs'

    npm -v 报错:Error: EPERM: operation not permitted, mkdir 'C:\soft\nodejs' 起因:原本安装node在C盘soft文件夹下,按node ...

  5. Python元类实战,通过元类实现数据库ORM框架

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第19篇文章,我们一起来用元类实现一个简易的ORM数据库框架. 本文主要是受到了廖雪峰老师Python3入门教程的启 ...

  6. c语言二维数组的转置

    #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxsize 3 #defi ...

  7. 前端开发神器Charles从入门到卸载

    前言 本文将带大家学习使用前端开发神器-charles,从基本的下载安装到常见配置使用,为大家一一讲解. 一.花式夸奖Charles 截取 Http 和 Https 网络封包. 支持重发网络请求,方便 ...

  8. 小师妹学JVM之:JIT中的PrintAssembly

    目录 简介 使用PrintAssembly 输出过滤 总结 简介 想不想了解JVM最最底层的运行机制?想不想从本质上理解java代码的执行过程?想不想对你的代码进行进一步的优化和性能提升? 如果你的回 ...

  9. .NET Core下开源任务调度框架Hangfire

    今天无意中发现了一个很好用的任务调度框架.Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在 .net core的环境中,由Core自带的DI管理着生命周期. 相较于qu ...

  10. 写给程序员的机器学习入门 (七) - 双向递归模型 (BRNN) - 根据上下文补全单词

    这一篇将会介绍什么是双向递归模型和如何使用双向递归模型实现根据上下文补全句子中的单词. 双向递归模型 到这里为止我们看到的例子都是按原有顺序把输入传给递归模型的,例如传递第一天股价会返回根据第一天股价 ...