博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象
阅读量:5886 次
发布时间:2019-06-19

本文共 2138 字,大约阅读时间需要 7 分钟。

对象(object)

一 js中对象:
                内置对象:Math RegExp Date Array String Function ...
               宿主对象: DOM BOM
               自定义对象:

二 原始数据类型:基本类型、引用类型
               基本类型:number string null undefined boolean
               引用类型:Object Math RegExp Date Array Function
               基本包装类型:String Number Boolean
               内存:堆、栈
               基本类型的数据是存放在栈当中的
               引用类型和基本包装类型是存放在堆当中的

                 ps:基本类型按值访问的,引用类型和基本包装类型是按址(指针)访问的

三 对象(Object)

           一)定义:无序属性的集合
                      1 通过Object

                            var obj=new Object();

obj.name='小黑';               obj.age=20;               obj.info=function(){
console.log(this.name+'----'+this.age); }; obj.info();

                      2 对象字面量               

                     var obj={

                      name:'小黑',
                      age:20,
                      info:function(){
                      console.log(this.name+'----'+this.age);
                                    }
                   };
                         obj.info();

二)属性的分类
          1 数据属性
                      [[configurable]]:表示能否使用delete操作符删除从而重新定义,或能否修改为访问器属性。默认为true;
                      [[enumberable]]:表示是否可以在 for...in 循环和 Object.keys() 中被枚举。默认true;

                       

                      <script>

                                 //定义对象--对象字面量(通过键值对的方式)
                                 /*
                                 1 属性和属性值是用键值对的方便表达
                                 2 函数里面的this指向的是obj
                             */
                                  var obj={
                                              name:'小黑',
                                              age:20,
                                              info:function(){
                                                  console.log(this.name+'----'+this.age);
                                             }
                                          };
                                          //删除对象的属性
                                          // delete obj.name;
                                           // obj.name=undefined;
                                             // console.log(obj.name);
                                            Object.defineProperty(obj,'name',{
                                         configurable:false,
                                               enumerable:false,
                                             value:'花花'
                                       });
                                   delete obj.name;
                                    console.log(obj.name);
                                   for(var i in obj){
                                     console.log(i,obj[i]);
                                 }
                               //返回对象的所有键名的集合
                                var arr=Object.keys(obj);
                                  console.log(arr[0]);

                                //属性的内部特性所设的值优先级要大于定义时属性值

                                 obj.name='小黑';
                                 console.log(obj.name);

                               </script>

                      [[writable]]:表示是否可修改属性的值。默认true;

                     [[value]]:包含该属性的数据值。读取/写入都是该值。

          2 访问器属性

                        [[configurable]]:是否可通过delete操作符删除重新定义属性;
                     [[enumberable]]:是否可通过for-in循环查找该属性;
                    [[set]]:写入(设置)属性时调用函数,默认:undefined;一旦属性被访问读取,此方法被自动调用。
                    [[get]]:读取(获取)属性时调用函数,默认:undefined;一旦属性被重新赋值,此方法被自动调用。

                              <script>

                             //定义对象--对象字面量(通过键值对的方式)

                                  /*1 属性和属性值是用键值对的方便表达

                                     2 函数里面的this指向的是obj*/

                                var obj={
                                     name:'小黑',
                                     age:20,
                                   info:function(){
                                    console.log(this.name+'----'+this.age);
                                   }
                              };
                          var temp='';
                          Object.defineProperty(obj,'name',{
                          configurable:false,
                          enumerable:false,
                            //设置时可以通过注入形参的方式来拿到你设置的值
                           set:function(v){
                              console.log(v);
                             temp=v;
                             console.error('我被设置了,这是一个非法操作');
                          },
                         //获取时不能通过注入形参方式拿到你所设置的值
                       get:function(){
                          return temp;
                        console.log('我被使用了');
                          }
                    });
                           obj.name='花花1';
                      //
                             console.log(obj.name);
                               </script>

转载于:https://www.cnblogs.com/wen936/p/7741685.html

你可能感兴趣的文章
bootstrap 2
查看>>
Annotation研究的一些学习资料
查看>>
webpack资料
查看>>
DotNet加密方式解析--散列加密
查看>>
OpenSSL使用2(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12概念说明)(转)
查看>>
【前端】:HTML
查看>>
SSM框架——使用MyBatis Generator自动创建代码
查看>>
java数据库操作:JDBC的操作
查看>>
基于OpenCV的形态学开源库 V0.2
查看>>
在ubuntu下安装和配置vsftpd
查看>>
c#中结构体和类的比较
查看>>
Linux磁盘配额
查看>>
JQuery UI的拖拽功能
查看>>
数据驱动销售——个性化推荐引擎
查看>>
C语言标准库函数qsort那点小事
查看>>
HL7 CDA高级培训
查看>>
Android 调用照相机拍照
查看>>
linux的C获取shell执行返回的结果
查看>>
关于spring mybateis 定义resultType="java.util.HashMap"
查看>>
程序员怎么留住健康?
查看>>