js对象基础知识

注意看js中对象的种类  大概分为以下三种  内置的:像数组、number   ;  宿主环境:浏览器运行环境下的浏览器的对象,比如window、document ;  自己创建的:有三种方式

 

下面介绍自己创建的三种方法:

 第一种方法:字面量创建方法:

 1 <html>
 2 
 3 <head>
 4     <title>Object</title>
 5 </head>
 6 <body>
 7 
 8 <script type="text/javascript">
 9 
10 var  p = {
11     name:"cj",
12     work:function () {
13         console.log("working...");
14     },
15     _age:18,   //age:18  这样会让别人很好没有限制的修改,比如别人可以修改成-1、200这样的
16                //下划线的_age 从编码上可以用,但是
17                //但是它的意思是告诉别人不要用这个属性,算是一种约定,改用get set的方式
18     get age(){
19         return this._age;
20     },
21     set age(val){
22         if(val <0 || val >150){
23             throw new Error("invalid value");
24         }else{
25             this._age = val;
26         }
27     },
28     address:{
29         home:"jiating",
30         office:"office"
31 
32     }
33 
34 };
35 
36 p.work();
37 console.log(p.age);
38 console.log(p["age"]);
39 
40 //级联访问
41 console.log(p.address.home);
42 
43 // 一种链式写法:输出的result值是jiating
44 // 这种方式 中途任何一种方式为空  就会把空返回给result 如果都不为空则返回最后一个
45 var result = p && p.address && p.address.home;
46 console.log(result);
47 
48 // 第二种访问对象属性的方法 是通过 中括号 内 加双引号  记得用字符串 要加双引号
49 var o={1:"abc"};
50 console.log(o["1"]);
51 var pname="1";
52 console.log(o[pname]);  //这种来自于变量的对象属性  用这种方式 很常用很重要  一定要掌握
53 </script>
54 </body>
55 </html>

 

 

 

 

 

第二种方法:通过object函数

 

新增成员的其他方法:

 默认的writable就是false  下面举例证明改不了 篮球为足球

 

一次性加多个:

 

 

 

 通过get set的方式:

 

 

 对象的基本操作

遍历:

sx相当于属性名,这个循环里就用到了 中括号属性的方式 p[sx]  

 

发现并没有上面后来定义的salary,gender,height,因为

 

因为默认的 enuerable 可枚举属性也为false 所以 无法遍历出来

 除了可枚举无法遍历以外  还有个就是它的遍历结果是无序的 要想使它有序起来,可以有一个办法:

通过js提供的keys函数 把对象的key变成一个数组,然后再对数组进行排序之后 再遍历。

 

判断是否存在某个属性的2种方法: 存在即返回 true

删除成员:

 

writable:是否可以修改

enuerable:是否可以枚举

configurable:如果属性设置为false 那么该属性就不能被删除 如果设置为true  就是可以重新用defineProperty重新配置

 查看属性的基本情况的方法

 

 

字面量创建和 new Object()方式创建对象是一样的:

 function Function()是最顶级的构造器

 

 

 

 

 instanceof 和构造器紧密相关:

 

第三种创建对象的方式:对象工厂的方式

 

 

 

 JS中的类:通过函数实现  注意Person  既然是类 那就P是大写开头,属性不能通过var创建  要通过this来创建指向这个对象

 

 

共同的东西:  都只有一个人头:

 

 prototype是什么?

 

 

 只有函数才有prototype:

 

 

 

 prototype指向的是一个对象:证明:

 

所以两种方式都可以找到headcount:

 

这种function Person(){...} 我们称之为 伪类  因为js里面没有类这个概念 重要的是通过这个产生的对象和这个类函数 并没有什么关系 这是关键,

真正和对象有关系的其实是原型,所以称函数类为伪类  

p里的name并没有改变 就可以证明

 

 

 

转载于:https://www.cnblogs.com/alifetime/p/8455335.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值