对象的属性(三个特性)

对象基础

一. javascript的数据类型:  对象类型(复杂数据类型)  String类型(字符串类型) Number类型(数字类型) 
                          Boolean(布尔类型)  Undefined(未定义类型) Null(空型)

二. 对象
    1. 对象的概念: 对象是一组原始数据类型或引用类型(方法)的序列, 这个数列是以键值对的形式存储,序列中的每一项 被称之为属性或方法(行为),且每一个属性名必须是唯一的.
       对象的用途: 开发人员会经常使用到对象数据类型,对象数据类型用来存储数据或是创建自定义函数
    
    2. 创建一个简单的对象
       var person = {
           name:"Tom",
           age : 20,
           30 : 10,
           sayname:function(){
               console.log("I‘m" + this.name); 
           }
       } 
       取值:
       console.log(person.name); //返回Tom; 获取name这个属性的值
       console.log(person["30"]); //返回10; 获取30这个属性的值

3. 属性名可以是字符串或数字,如果属性名是数字,那么在调用时(取值),需用[]中括号,里面加""双引号来取值
        var person = {
           10:15
           30:35,
           sayname:function(){
               console.log("I‘m" + this["10"]); 
           }
       } 
       取值:
       console.log(person["10"]); //返回15; 获取"10"这个属性的值
       console.log(person["30"]); //返回10; 获取"30"这个属性的值

4. 原始数据类型 和 引用数据类型
       1. 原始数据类型是以值的形式直接将值存储到变量里(自我理解:每个变量都被分配了不同的内存区域):
          例: var person = "Tom";
              var other = person;
              person = "Nicy";
              console.log(person); //返回 "Nicy"
              console.log(other); //返回"Tom";
          由上看出: 即使把person的值修改后,other的值还是以前存储的那个值.

2. 引用数据类型是将一个地址值(该对象属性的地址)存储到变量里,这个变量指向的是这个对象属性的内存空间:
          例: var person = {name:"Tom"};
              var other = person;
              person.name = "Nicy";
              console.log(person.name); //返回 "Nicy"
              console.log(other.name);  //返回 "Nicy"
          解释: person/other 这两个变量都存储的是{name:"Tom"}这个对象属性的存储空间,即
               指向的都是同一块内存区域,这块内存区域存储了一个匿名对象,其有着name的属性.

三. 对象数据类型的属性所具有的特性

对象数据类型: 每个数据属性除了具有键值对的特性外,还有其他三个特性(这三个特性的初始值都为true).
    为一个对象添加属性的写法: Object.definProperty(person,"name",{
                                configurable:true,  //设置person这个对象的name属性的值为可修改的
                                value:"Tom"
                           });
    注意: 设置属性时,里面的语句用,逗号隔开,最后一条语句的后面不写逗号;Object的小括号后要有;分号
   
    1.  可配置性(configurable):指明该属性是否可被删除 ; (设置为true,可被删除; 设置为false,不可被删除;),
   删除属性(比如name属性)的写法: delete person.name
    
        例:  Object.definProperty(person,"name",{
                  configurable:true,  //设置person这个对象的name属性可被删除
                  value:"Tom"
            });
            console(person.name);//输出"Tom"
            delete person.name;  //因为configurable被设置为true,代表name属性可被删除,
                                   这里调用了delete删除方法,故name这个属性被删除了.

console(person.name);//因为上一句已把name属性删除,此时person里没有name这个属性了,故不再打印.

2. 枚举性(enumerable): 指明该属性能否在for/in中被遍历到;(设置为true,该属性可被遍历到,并被返回;
   设置为false,该属性不能被遍历到,即被隐藏起来了), for/in的写法:
   for(var X in person){ console.log(x + ":" + person[x]);} ---- 这个for/in就相当于以前学习的for循环,X是被遍历到的person这个对象的各个属性,若要返回属性的值,写法为person[X].
      
      例:  Object.definProperty(person,"name",{
                  enumerable:true, //设置person这个对象的name属性可在for/in中返回
                  value:"Tom"
            });
        
            Object.definProperty(person,"age",{
                  enumerable:false,  //设置person这个对象的age属性不能再for/in中被返回(将age属性隐藏起来了)   
                  value:20
            });
   
            for(var X in person){
               console.log(X + ":" + person[X]);
            }
           for/in 的 输出结果为: name:"Tom"
           因为age属性的enumerable的值设置为false,表示在for/in里不能返回age,即把age属性隐藏起来.

3. 可写性(writable): 指明该属性能否被修改; (设置为true,该属性的值可被修改;设置为false,该属性的值不可被修改)
       
       例: Object.definProperty(person,"name",{
                  writable:true, //设置person这个对象的name属性的值可被修改
                  value:"Tom"
            });

Object.definProperty(person,"age",{
                  writable:false, //设置person这个对象的age属性的值不可被修改
                  value:20
            });

person.name = "Nicy";
            person.age = 30;
            console.log(person.name); //返回"Nicy",name属性的值修改成功
            console.log(person.age);  //返回20, age属性的值还是原值,没被修改掉
          
            说明: name属性的writable设置的为true,故name属性的值可被修改;
                  age属性的writable设置的为false,故age属性的值不可悲修改.

时间: 2024-08-10 20:19:23

对象的属性(三个特性)的相关文章

对象相关的——————三个属性

先罗列下: prototype 原型 class 类 extensible attribute  可扩展属性 prototype 属性: prototype 大概回顾下,从创建方式着手, 字面量创建的对象其原型为 Object.prototype,create() 创建的其原型指向第一个参数给定对象;  如果通过构造函数创建的其 指向 构造函数 prototype 属性指向的对象. protptype 原型主要是用来继承属性以及方法. 那我们怎么来查找和设置原型对象尼? ECMAScript3中

JS面向对象篇一、理解对象及属性特性(属性描述符)

本文内容 1.理解对象; 2.ECMAScript有两种属性类型:数据属性和访问器属性(getter和setter函数); 3.数据属性的属性特性:[[Configurable]].[[Enumerable]].[[Writable]].[[value]]; 4.访问器属性的属性特性:[[Configurable]].[[Enumerable]].[[get]].[[set]]; 5.Object.defineProperty().Object.defineProperties().Object

javascript中对象的属性的特性

enumberable: 表示是否能通过for-in循环返回属性.默认为true writable: 是否可以修改属性, 默认为true value: 包含这个属性的数据值.读取属性值时3,从这个属性读,写入属性时,把新值保存到这个位置.默认值为undefine. getter: 在读取属性时,调用的函数 setter: 在写入属性时调用的函数 特别注意:一旦调用了Object.defineProperty方法之后,那些未定义的特性值除了configurable为false之外,其他都为unde

03-对JQuery对象的属性,特性以及数据的操作

对JQuery对象的属性,特性以及数据的操作: 特性(attributes)和属性(properties): 特性的值是字符串. 属性的值不光为字符串,而且可以为布尔值,对象,数字. 元素的属性和特性有动态链接,如果特性在dom对象中存在,其中一个发生变化,另一个也会变化 如果特性是本来就在dom对象中存在,但是类型为boolean,那么特性和属性将不会同步. 如果attributes不是dom对象内建的属性,attributes和properties的值不会同步. 操作元素的特性: 获取特性的

深入理解javascript对象系列第三篇——神秘的属性描述符

× 目录 [1]类型 [2]方法 [3]详述[4]状态 前面的话 对于操作系统中的文件,我们可以驾轻就熟将其设置为只读.隐藏.系统文件或普通文件.于对象来说,属性描述符提供类似的功能,用来描述对象的值.是否可配置.是否可修改以及是否可枚举.本文就来介绍对象中神秘的属性描述符 描述符类型 对象属性描述符的类型分为两种: 数据属性和访问器属性 数据属性 数据属性(data property)包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个特性 [1]Configurable(可配置性

【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)

题目: 定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值.(Objective-C) 1)    不使用@property,手动编写他们的访问器方法(getter和setter),注意内存管理(手动管理内存) 2)    增加一个便利构造器(快速构造器) 3)    使用NSLog输出学生对象时,输出信息格式为:My Name Is XXX  Age Is XXX Score Is XXX 4)    对5个学生对象按照成绩->年龄->姓名优先级排序(成绩相

ECMAScript5新特性之属性描述符读写对象的属性

直接读写.使用Getter/Setter accessors 'use strict';var fruit = {}; Object.defineProperties(fruit,{ 'name' : { configurable : true, enumerable : true, get : function(){ console.log('Getter方法'); return name; }, set : function(val){ console.log('Setter方法'); na

0145 JavaScript创建对象的三种方式 之 字面量:创建,访问对象的属性&方法,变量、属性、函数、方法总结

在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object): 利用字面量创建对象 利用 new Object 创建对象 利用构造函数创建对象 5.2.1 利用字面量创建对象 5.2.1.1 创建 使用对象字面量创建对象:{ }. 就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法: { } 里面采取键值对的形式表示 键:相当于属性名 值:相当于属性值,可以是任意类型的值(数字类型.字符串类型.布尔类型,函数类型等) 代码如下: var star = { na

HTML DOM对象的属性和方法

HTML DOM对象的属性和方法 HTML DOM 对象有几种类型: 1.Document 类型 在浏览器中,Document 对象表示整个 HTML 文档. 1.1属性 引用文档的子节点 documentElement var html = document.documentElement; //取得对<html>元素的引用 body var body = document.body; //取得对<body>元素的引用 获取文档信息 title 通过 title 属性可以访问当前