精华内容
下载资源
问答
  • 前段时间跟公司前端对接的时候,一个简单的数据库查询,但是前端说将结果按某个属性分组,每组单独一个集合,集合第一个元素为该属性,第二个元素为该属性值相同的所有对象集合,由于是小白一个,这个数据整理也是花...
  • 属性:特征 方法:动作 注: python与其他语言不一样,可以动态的加载对象属性和方法。 2、类属性 & 对象属性属性 #定义类和属性 class Student: # 类属性 name = 'Jason' age = 20 object1 = Student() #...
  • 第四种类型是类属性,它的特点是作为类型的属性而不是对象实例的属性,在没有构造对象时也能够访问,下面通过例子说明这四种属性类型各自的特点和区别: 类型的四种属性 代码如下: <html> <head> <...
  • 理解对象 ES5中的对象是指无序的属性的集合。(属性可以是基本值、对象和函数)。...数据属性有四个描述其特征的特性。(这些特性是为javascript内部引擎服务的,不能直接访问,所以将它们放在方括号中。) ...

    理解对象

    ES5中的对象是指无序的属性的集合。(属性可以是基本值、对象和函数)。

    对象的属性类型有两种,一种是数据属性,是数据值的保存位置;另一种是访问器属性,包含getter和setter函数。

    1.1 数据属性

    数据属性包含一个数据值的位置,在这个位置可以读取和写入值。数据属性有四个描述其特征的特性。(这些特性是为javascript内部引擎服务的,不能直接访问,所以将它们放在方括号中。)

    1. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。默认值为true。
    2. [[Enumerable]]: 能否通过for-in循环返回属性。默认值为true。
    3. [[Writable]]:能否修改属性的值,默认值为true。
    4. [[Value]]: 属性的数据值,默认为undefined。

    !!!此处说的默认值是指直接定义时的默认值,与使用defineProperty()定义的属性默认值不同

    数据属性可以直接使用对象字面量或new Object对象来定义,而这些特性值不能直接访问,要修改默认的特性,要使用定义在Object对象中的defineProperty()函数

    !!!在调用 Object.defineProperty()方法时,如果不指定configurable、enumerable 和writable 特性的默认值都是 false。

    示例如下:

    // 使用对象字面量创建一个对象
    var person = {};
    
    //修改该对象属性的默认特性
    /*
    	第一个参数为属性所在的对象。
    	第二个参数为要定义的属性名。
    	第三个参数是其特性描述符的对象。(属性为configurable, enumerable, writable, value)
    */
    Object.defineProperty(person, "name", { 
     writable: false, 
     value: "Nicholas" 
    });
    
    //这样就可以访问定义好的数据属性了
    alert(person.name); //"Nicholas" 
    
    //在定义属性时将writable设定为false,所有对name属性的值更改操作无效。(严格模式下会报错)
    person.name = "Greg"; 
    alert(person.name); //"Nicholas"
    

    另外将把 configurable 设置为 false,表示不能从对象中删除属性。如果对这个属性调用 delete,则在非严格模式下什么也不会发生,而在严格模式下会导致错误。一旦把属性定义为不可配置的,就不能再把它变回可配置了。 此时,Object.defineProperty()方法修改除 writable 之外的特性,都会导致错误。

    1.2 访问器属性

    访问器属性不包含数据值,包含一对 getter 和 setter 函数(不必需)。
    在读取访问器属性时,会调用 getter 函数,这个函数负责返回有效的值;
    在写入访问器属性时,会调用setter 函数并传入新值,这个函数负责决定如何处理数据。
    访问器属性也包含了四个特性。

    1. [[Configurable]]: 表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。默认值为true。
    2. [[Enumerable]]: 能否通过for-in来访问属性。默认值为true。
    3. [[Get]]: 读取属性时调用的函数。默认值为undefined。
    4. [[Set]]:写入属性时调用的函数,默认值为undefined。

    访问器属性不能直接定义,必须要使用Obiect.defineProperty()来定义。定义的过程于数据属性类似。

    var book = { 
     _year: 2004,  //'_'是一种常用于表示只能通过对象方法访问的属性的记号
     edition: 1 
    }; 
    /*
    	第一个参数为属性所在的对象。
    	第二个参数为要定义的访问器属性名。
    	第三个参数是其特性描述符的对象。(属性为configurable, enumerable, get, set)
    */
    Object.defineProperty(book, "year", { 
    // 访问一个私有变量
     get: function(){ 
     return this._year; 
     }, 
     // set常用于改变一个变量导致其他变量改变的情形
     set: function(newValue){ 
     if (newValue > 2004) { 
     this._year = newValue; 
     this.edition += newValue - 2004; 
     } 
     } 
    }); 
    book.year = 2005; 
    alert(book.edition); //2
    

    不一定非要同时指定 getter 和 setter。
    只指定 getter 意味着属性是不能写,在非严格模式下尝试写入属性会被忽略。
    类似地,只指定 setter 函数的属性也不能读,在非严格模式下会返回 undefined。
    在严格模式下,尝试写入只指定了 getter 函数的属性和读取只指定了 setter函数的属性会抛出错误。

    定义多个属性

    上面介绍的Object.defineProperty()方法只能定义单个属性,Object.defineProperties()方法可以通过描述符一次定义多个属性。
    !!!在调用 Object.defineProperties()方法时,如果不指定configurable、enumerable 和writable 特性的默认值都是 false。
    示例如下:

    var book = {}; 
    Object.defineProperties(book, { 
    	//定义数据属性
    	 _year: { 
    	 	value: 2004 
    	 }, 
    	 edition: { 
    	 value: 1 
    	 }, 
    	 // 定义访问器属性
    	 year: { 
    		 get: function(){
    		 	return this._year; 
    		 }, 
    		 set: function(newValue){ 
    			 if (newValue > 2004) { 
    			 this._year = newValue; 
    			 this.edition += newValue - 2004; 
    		 	} 
    	 	} 
    	} 
    });
    

    读取属性的特性

    JS中的Object。getOwnPropertyDescriptor()方法可以取得给定的对象属性描述符。对上一节中定义的book对象,有以下示例:

    // 该方法接受两个参数  第一个参数是对象   第二个参数是对应的属性
    var descriptor = Object.getOwnPropertyDescriptor(book, "_year"); 
    alert(descriptor.value); //2004 
    alert(descriptor.configurable); //false
    alert(typeof descriptor.get); //"undefined" 
    
    var descriptor = Object.getOwnPropertyDescriptor(book, "year"); 
    alert(descriptor.value); //undefined 
    alert(descriptor.enumerable); //false 
    alert(typeof descriptor.get); //"function"
    

    在 JavaScript 中,可以针对任何对象——包括 DOM 和 BOM 对象,使用 Object.getOwnPropertyDescriptor()方法。

    展开全文
  • 这个方法返回一个对象,里面包括以下四个属性,对应着四大特征属性 意义 configurable 是否可被删除 默认true enumerable 是否可被for in 遍历 默认true value 当前属性的值 writab

    一些时候可能需要对某些对象属性进行某些设置,比如禁止遍历,修改,删除。js对象中有三个特征可以帮助实现这些需求。

    获取属性四类特征

    Object.getOwnPropertyDescriptor(obj, attr); // 传递对象和此对象下的属性
    

    这个方法返回一个对象,里面包括以下四个属性,对应着四大特征。

    属性意义
    configurable是否可被删除 默认true
    enumerable是否可被for in 遍历 默认true
    value当前属性的值
    writable是否可被修改 默认true

    根据需求设置四个属性

    设置特征

    使用configurable属性,设置对象属性的特征方法为

    Object.defineProperty(obj, attr, {}); 传递三个参数,依次是当前对象,当前需要设置的属性,需要设置的特征对象
    
    单个属性的设置
    var stu = {
     	sid : 1001,
        sName : 'cress',
        sscore : 100
    }
    // 单个设置          设置对象stu的属性sid的特征
    Object.defineProperty(stu, 'sid', {
        configurable : false, // 不可删除
        writable : false, // 不可修改
        enumerable : false // 不可以遍历
    });
    

    经过这样设置,对象stu的sid属性就是不可被修改的,不可被删除的,不可被循环遍历的。
    可以测试一下

    // 修改sid
    stu.sid = 1002;
    

    去浏览器控制台看结果在这里插入图片描述
    是会报错的,并且有个read only的关键字,这也就告诉我们是只读的。
    想让这段代码报错是得有个前提,代码必须在严格模式下执行。

    “use strict”; 开启 严格模式, 写在想要在严格模式下执行的代码的最前面
    

    开启了严格模式,才会报错。不开启严格模式 ,不会报错,但也修改不了属性值。开启严格模式结果更直观。

    三个属性也可以根据需求单独设置。

    同时设置多个属性

    如果需要设置多个属性的特征,可以使用

    Object.defineProperties(); 多一个s
    
    var tea = {
      teaid : 2001,
        teaName : 'cress'
    }
    
    // 多个设置
    Object.defineProperties(tea, {
        'teaid': {
            configurable : false,
            writable : false
        },
        'teaNmae': {
            configurable : false
        }
    })
    
    defineProperty设置不存在的属性

    使用defineProperty设置不存在的属性名时将会给对象添加一个属性,特征默认都是false。

    var person = {
    	face : 'standard',
        footer : 2
    }
    Object.defineProperty(person, 'hand', {
        value : 2
    });
    console.log(Object.getOwnPropertyDescriptor(person , 'hand')); 
    

    控制台打印
    在这里插入图片描述
    属性的特征就这么写些,以上操作可以称之为 保护属性
    属性可以被保护,那么对象也是一样

    保护对象

    对象的保护分为三个级别的保护。

    1. 不可拓展:表明此对象不能再添加属性。
    2. 密封:表明次对象不可新增,不可删除属性。
    3. 冻结:表明次对象不可新增,不可删除属性,不可修改属性。
    1、不可拓展 preventExtensions
    "use strict"; // 接下来的所有报错都处于严格模式下
    
    var dog = {
       	hair : "brown",
        footer : 4
    }
    Object.preventExtensions(dog);
    // dog.eyes = 2; // 报错
    dog.hair = "gray"; // 可以修改
    delete dog.footer; // 可以删除
    
    2、 密封 seal
    var car = {
        name : "Volvo",
        color : 'black'
    }
    Object.seal(car);
    // delete car.name; // 报错
    // car.speed = 220; // 报错
    car.name = "Audi"; // 可以修改
    
    3、冻结 freeze
    var house = {
        area : 120,
        floor : 20,
        price : 1500000
    }
    Object.freeze(house);
    // delete house.area; // 报错
    // house.position = 3; // 报错
    // house.area = 150; // 报错
    
    展开全文
  • 属性是一个变量,用来表示一个对象特征,如颜色、大小、重量等;方法是一个函数,用来表示对象的操作,如奔跑、呼吸、跳跃等。 在JavaScript中通常使用”.”运算符来存取对象的属性的值。或者使用[]作为一个关联...
  • 哪些视觉属性是对象类的特征
  • js代码-Object.keys 返回的数组里,只包含自身可迭代的属性; for in 遍历的对象属性,既有自身可迭代的属性,也有原型链上的属性
  • 数据对象属性特征)类型

    千次阅读 2017-07-19 09:43:44
    当我们在对属性进行处理时,分清属性的类型是有必要的,不同类型的属性需要使用不同的处理方法,如在对对象的标识列进行处理时,对该列进行数学运算是没有意义的,因为对象的标识列一般是标称属性,只是起到唯一标识...

       在数据挖掘/机器学习过程中,当我们在对属性进行处理时,分清属性的类型是有必要的,不同类型的属性需要使用不同的处理方法,如在对对象的标识列进行处理时,对该列进行数学运算是没有意义的,因为对象的标识列一般是标称属性,只是起到唯一标识的作用。数据对象的属性类型可以用下图来概括:

       从图中可以看出,数据对象的属性类型可以分为标称属性、二元属性、序数属性、数值属性四大类。其中二元属性是标称属性的特例。下面从各种属性类型的特点、可以使用的中心趋势度量、是否可以离散化三个维度来概括。

    1 标称属性

       标称属性的值是一些符号或事物的名称,但可以用数字表示这些符号或名称,标称属性的值是枚举的。常见的标称属性如姓名、籍贯等。鉴于标称属性的特点,统计它的中位数和均值是没有意义的,但是我可找出某个出现次数最多的值,比如,出现次数最多的姓名,这个就可以用众数来表示。因此,标称属性的中心趋势度量一般是众数。

    2 二元属性

       二元属性是标称属性的特例,也是一种布尔属性,对应01两个状态,分别表示falsetrue。常见的二元属性如抛一枚硬币是正面朝上还是反面朝上,患者的检查结果为阴性还是阳性。二元属性分为对称的和非对称的,如果属性的状态结果是同等重要的,如抛硬币的结果状态,则该属性是对称的二元属性,反之为非对称二元属性。由于二元属性也是标称属性的一种,因此只能用众数来统计二元属性。

    3 序数属性

       序数属性的可能值之间存在有意义的序或秩评定,但是相继值之间的差是未知的,常见的序数属性如上衣的尺寸有SMLXL,可以用数字,如1234分别对应属性的SMLXL值。由于序数属性是有序的,它的中位数是有意义的,因此序数属性的中心趋势度量可以是众数和中位数。

       标称属性、二元属性、序数属性都是定性的,且都是离散的。

    4 数值属性

       数值属性用整数或实数值表示,常见的数值属性如年龄。数值属性可以是区间标度的或比率标度的。区分区间标度和比率标度属性的原则是该属性是否有固有的零点,如摄氏温度没有固有的零点,比值没意义,所以是区间标度属性,而开式温度有固有的零点,比值是否有意义,所有是比率标度属性。数值属性的平均值是有意义的,如某个城市的平均年龄可以看出这个城市的老龄化情况,因此,数值属性可以用众数、中位数、平均值三个中心趋势度量来统计。

       数值属性是定量的,可以是离散的也可以是连续的。


    展开全文
  • 我们通过描述属性特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性特征。它会汪汪叫,会摇尾巴等是它的行为。 我们在描述一个真实对象(物体)时包括两个方面: 它可以做...
  • ES 6中定义对象属性

    2020-01-08 09:57:39
    ES6 允许在对象中使用表达式定义属性名,这时表达式放置在方括号内

    ES6 允许在对象中使用表达式定义属性名,这时表达式放置在方括号内。

    一.ES 6中定义对象属性

    1.基本定义

    • ①在ES6中定义对象属性有两种方式。

      // 方法一
      obj.foo = true;
      
      // 方法二
      obj['a' + 'bc'] = 123;
      
    • ②在es5的对象中定义属性名

      var obj = {
        foo: true,
        abc: 123
      };
      
    • ③在es6对象中使用表达式定义对象属性名

      let propKey = 'foo';
      
      let obj = {
        [propKey]: true,
        ['a' + 'bc']: 123
      };
      
    • ④在es6对象可以使用表达式定义方法名

      let obj = {
        ['h' + 'ello']() {
      	return 'hi';
        }
      };
      
      obj.hello() // hi
      
    • ⑤属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[object Object],对象key值之间会相互覆盖

      const keyA = {a: 1};
      const keyB = {b: 2};
      
      const myObject = {
        [keyA]: 'valueA',
        [keyB]: 'valueB'
      };
      
      myObject // Object {[object Object]: "valueB"}
      
    展开全文
  • JS理解对象对象属性

    千次阅读 2020-07-30 16:10:20
    1.创建自定义对象最简单的方式就是创建一个Object实例,然后为它添加属性和方法 **[外链图片转存失败,源站可能有防盗加粗样式]!链机制,建https://(img-uXblog.csdnimg....
  • 字段属性是为了保护字段作用,构造函数起初始化对象作用。类名与函数名第一个字母需大写,大括号前面一行代码结尾不需要分号。 需进一步搞清除知识点:类,字段,方法等前public,prviate等修饰符具体作用。 using ...
  • 获取json对象中的属性

    千次阅读 2019-12-28 20:29:33
    获取json对象中的属性 // 从文件中读取json数据 String request = FileUtil.readJsonFile("D:\\project\\v1.4\\SmartWeb\\src\\main\\resources\\testjson\\pyafr.json"); // 转换字符串为json对象并获取需要的属性...
  • 五、数据对象属性类型

    千次阅读 2020-03-02 11:44:21
    数据挖掘_unit05 1.数据对象 数据集由数据对象组成一个数据对象代表一个实体。...属性是一个数据字段,表述数据对象的一个特征。通常情况下,属性、维、特征和变量表示的是同一个意思。 描述顾客对象的属性可...
  • 数据对象属性类别

    2020-12-24 22:20:21
    在数据挖掘中,属性是一个数据字段,表示数据对象特征。 属性的分类 属性的类型由该属性可能具有的值得集合决定,属性可以分为以下几类:标称属性,二元属性,序数属性,数值属性等。 标称属性。 标称属性的值是
  • 动态创建对象,并给对象属性赋值

    千次阅读 2018-07-24 10:04:28
    在开发过程中经常会遇到java对象属性特征不确定的情况,比如属性的名称,属性的类型,属性的取值等不确定的情况,如何在java运行时获取这些信息?动态的设置java对象属性值?借助java反射机制以及javassist能够...
  • 对象、实例对象、类属性、实例属性 下面的一个小demo,定义了一个省份类Province ,即类对象 Province ,开辟了一块内存空间,空间中存放着 类属性 country 和 __init__()方法 。 继续创建了一个实例对象 obj ,...
  • 形式背景中属性特征与对象特征的完备定义
  • 类:具有同种属性对象...属性:用来描述具体某个对象特征的是属性,是静态的。比如:姚明身高2.6米多;小白的毛发是棕色的;二郎神额头上有只眼睛; 方法:每个对象有它们自己的行为或者是使用它们的方法,比...
  • 1.属性的数据特征 1.ES5中每个对象的每一个属性都有一个相应的描述对象,用于控制这个属性的行为。每个对象都有四个数据特征。 configurable 对象属性是否可重新定义 作用:能否使用delete、能否需改属性特性、或...
  • 类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化...
  • ヤッハロー、Kaiqisanすうう、一つふつうの学生プログラマである, 上一篇文章刚好讲了Map对象,它有一个特征就是可以使用参数决定它的属性值(“键"或者可以叫做每一个成员的第一个值),于是,我想起之前纠结的一个...
  • js 对象私有属性

    2017-11-01 15:22:36
  • 类就是一组具有相同数据结构(静态特征)和相同操作(动态行为特征)的对象的集合,是同一类事物的抽象,类的定义包括一组数据属性和在数据上的一组合法的操作。如C#中定义的int类型,如果没有就要自己来定义了,如...
  • 数据对象属性类型   数据集由数据对象组成。一个数据对象代表一个实体。例如,在销售数据库中,对象可以是顾客、商品或销售;在医疗数据库中,对象可以是患者;在大学的数据库中,对象可以是学生、教授和课程。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 565,705
精华内容 226,282
关键字:

对象的特征是属性