JavaScript语言精粹学习笔记之对象

  • 一、JavaScript的简单类型包括
    1.数字 number
    J s 不分整型与浮点型
    两个浮点相加,精度不够
    2.字符串 string
    3.布尔值 boolean(true和false)
    4.null
    5.undefined(没有确定的属性类型)
    以上都是简单数据类型
    其他都是对象 Function Array

研究一下 前五个貌似是对象,因为他们拥有方法,但是他们是不可变的?
简单数据类型,不是对象?
-二、JavaScript的对象
1.JavaScript的对象是无类别的可变的键控集合,也是属性的容器。
2.对象字面量
对象字面量是一种非常方便地创建对象值的表示法

var a = {
         name: "陈juju";
         stature:'173',
         gender:"男",
         }
         console.log(a)
     对象也可是嵌套的
    var school =  {
         grade:"二年级",
         class:"一班",
         student 1 = {
           name:"橙子",
           gender:"男",
           stature:"170",
           },
           student 2 = {
           name:"小颖",
           gender:"女",
           stature:"160",
              }
           }

3.检索
要检索对象中的值,可以采用在[]将要检索的属性括住,也可以用.表示法代替。优先考虑用.表示法,因为它更紧凑且可读性更好
在这里插入图片描述

当检索一个并不存在的成员元素的值,将返回一个 undefined值
在这里插入图片描述
|| 运算符可以用来填充默认值
在这里插入图片描述
当尝试检索一个undefined值会导致TypeError异常,这可以通过&&运算符来避免错误

    console.log(school.student3)  //undefined
    console.log(school.student3.name)   //TypeError
    console.log(school.student3) && console.log(school.student3.name) //undefined

4.更新
对象的值能通过赋值语句来更新,如果属性名已经存在在对象中,那么这个属性的值将会被替换

a.name="陈橙"
console.log(a.name);  //陈橙

如果对象之前不存在该属性名,那么该属性就会被扩充到对象中

a.hometown="江西"
console.log(a.hometown);   //打印出江西   这是之前a对象中没有的属性,所以被扩充到了a对象中  

5.引用
对象通过引用来传递,他们将永远不会被拷贝

var x = "a";
 x.name = "陈橙";
 var z = a.name;
 console.log("z')  //因为a和x是同一个对象的引用,所以打印出陈橙 

6.原型
每个对象都连接到一个原型对象,并且可以从中继承属性,所有通过对象字面量创建的对象都连接到object.prototype 这个JS标准的对象

当你创建一个新对象时,你可以选择某个对象作为它的原型。

原型连接在更新时是不起作用的,当我们对某个对象做出改变时,不会触及到该对象的原型。

原型关系是一种动态的关系,如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见。
7.反射
检查对象并确定对象有什么属性是一件很容易的事情,使用Typeof能够有效的帮助我们确定对象的类型

Typeof  a.name  // 'string'
Typeof a.stature //'number'

但是原型链中任何属性也会产生一个值

Typeof  a.age  // 'function'
Typeof  a.tall   //'function'

有两个方法处理这些不需要的属性
第一种是让你的程序检查并剔除函数值
第二种是用hasOwnproperty 方法
如果对象拥有独立的属性那么将会返回ture,hasOwnproperty方法不会检查原型链

a.hasOwnproperty('name')  //true
a.hasOwnproperty('age')    //false

8.枚举
枚举就是将对象中的属性一 一列举出来
我们应该创建一个数组,用for语句将属性列举出来

    var i ;
    var a =  {
         grade:"二年级",
         class:"一班",
         name:"橙子",
         gender:"男",
         stature:"170",
           },
       var b ={
           "二年级",
          "一班",
          "橙子",
          "男",
          "170",
          }
     for(i=0;i<length.school;i++)
          document.writeln(a[i]+":"b[i]);

通过for可以得到我们想要的值,而不用担心发掘出原型链中的属性,并且能够按时我们需要的顺序取得他们的值
9.删除
delete可以用来删除对象中的属性,但是它不会触及原型链中的任何对象

console.log(a.name)   //'陈橙'
//删除a.name中的属性,将会显现出a.name中的原型属性
delete  a.name
console.log(a.name)  //"陈juju"

10.减少全局变量污染
JavaScript中可以很随意定义那些可以应用资源的全局变量,但是全局变量削弱了程序的灵活性,我们应该避免
我们应该只创建一个全局变量

var MYschool{}

此时变量变成了我们的应用容器

MYschool.a =  {
        grade:"二年级",
        class:"一班",
        name:"橙子",
        gender:"男",
        stature:"170",
        },
MY.school =  {
        grade:"二年级",
        class:"一班",
        student 1 = {
          name:"橙子",
          gender:"男",
          stature:"170",
          },
          student 2 = {
          name:"小颖",
          gender:"女",
          stature:"160",
             }
          }

将多个全局变量定义在一个名称空间下,将会降低与其他应用程序的产生糟糕的相互影响的可能性,也能够使你的程序变得更容易读懂。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值