js对象属性 通过点(.) 和 方括号([]) 的不同之处

//    js对象属性 通过点(.) 和 方括号([]) 的不同之处

//    1、点操作符: 静态的。右侧必须是一个以属性名称命名的简单标识符。属性名用一个标识符来表示。标识符必须直接出现再js程序中,

//它们不是数据类型,因此程序无法修改它们。

//    2、中括号操作符: 动态的。方括号里必须是一个计算结果为字符串的表达式,属性名通过字符串表示。字符串是js的数据类型,

//再程序运行时可以修改和创建它们。

// 主要有以下区别:

    //1、[]--可以用变量作为属性名或访问,而点方法不可以;

    var obj = {};

    obj.name = ‘张三‘;

    var myName = ‘name‘;

    console.log(obj.myName);//undefined,访问不到对应的属性

    console.log(obj[myName]);//张三

    var person = {

        name:‘gogo‘

    };

    console.log(person["name"]);//gogo

    console.log(person.name); //gogo

    //    优点:1,可以通过变量来访问属性

    var propertyName = ‘name‘;

    console.log(person[propertyName]);  //gogo

    var propertyName2 = ‘name2‘;

    console.log(person[propertyName2]);  //undefined

    //2、[]中括号法--可以用数字作为属性名,而点语法不可以;

    var obj1={};

//    obj1.1=1;//Unexpected number

    obj1[2]=2;

//    console.log(obj1.1)

    console.log(obj1[2]);//2

//    console.log(obj1.2)

    console.log(obj1)//{2: 2}

//   3, [] 可以动态访问的属性名,可以在程序运行时创建和修改属性,点操作符就不行!

    // ( 即 []--可以动态设置和获取)

    var customer={};

    var addr=[‘北京‘,‘上海‘,‘广州‘,‘深圳‘];

    for(i=0;i<4;i++){

       customer["address"+i]=addr[i];

    }

    console.log(addr);

    console.log(customer);

    var str = "";

    for(i=0;i<4;i++){

        str += customer["address" + i] + "\t";

    }

    console.log(str);

//4,如果属性名中包含会导致语法错误的字符,或者属性名是关键字或者保留字,也可以使用方括号表示法。

//如:(属性名是关键字或者保留字--都可以点语法不严密,不报错,写法提示有错)

    person[‘first name‘] =‘gogo2‘;  //first name包含一个空格

    console.log(person[‘first name‘]);

//    console.log(person.first name)//书写都通不过

    person[‘for‘] =‘gogo_for‘;  //first name包含一个空格

    person.if =‘gogo_if‘;  //first name包含一个空格

    console.log(person[‘for‘]);//gogo_for

    console.log(person.for);//gogo_for

    console.log(person[‘if‘]);//gogo_if

    console.log(person.if);//gogo_if

//简单利用:在数组原型链上增加一个去重得的方法,并能实现链式写法。

    Array.prototype.myDistinct=function () {

        var obj={};

        for(var i=0;i<this.length;i++){

            var cur=this[i];

            if(obj[cur]==cur){//对象的属性名不能重复,重复就是修改;让对象的属性名和属性值相同,借以保存不重复的数组元素

//--中括号法可以用数字作为属性名,而点语法不可以;

                this[i]=this[this.length-1];

                this.length--;

                i--;

                continue;

            }

            obj[cur]=cur;

        }

//        console.log(obj);//{2: 2, 3: 3, 4: 4, 5: 5}

        obj=null;

        return this;

    };

    var arr=[5,3,3,4,5,4,2];

    arr.myDistinct().sort().pop();

    console.log(arr);//[2, 3, 4]

    var arr1=[3,‘a‘,4,5,4,‘b‘,‘a‘];

    console.log(arr1.myDistinct());//[3, "a", 4, 5, "b"]

</script>

  

原文地址:https://www.cnblogs.com/chendaoyin/p/9263435.html

时间: 2024-10-10 18:15:56

js对象属性 通过点(.) 和 方括号([]) 的不同之处的相关文章

遍历js对象属性

<script type="text/javascript"> var p = { a:'a', e:{ a:'a', c:'c' }, b:'1', c:{ a:2, x:'fffff', y:{ ee:'fff', f:200 } } } ; //遍历js对象属性 var ObjInfo = { /** @param obj 要遍历的对象 @param placeholder 占位符,排版用,如空格 */ info : function(obj,placeholder)

js对象属性的命名规则

JS标识符的命名规则,即变量的命名规则: 标识符只能由字母.数字.下划线和'$'组成 数字不可以作为标识符的首字符 对象属性的命名规则 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括只包含空格的字符串和空字符串): 通过.操作符为对象添加属性时,属性名称必须是合法的标识符名称: 如果属性名包含非法的标识符字符,则只能采用obj["propertyName"]的形式: 如果属性名是合法的标识符,读取时即可以采用obj.propertyName,也可以采用obj["

js对象-属性遍历

为了加强js对象的认知,又刷了一题. 直接上题目: 找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1.返回数组,格式为 key: value2.结果数组不要求顺序 示例: //输入 var C = function() {this.foo = 'bar'; this.baz = 'bim';}; C.prototype.bop = 'bip'; iterate(new C()); //输出 ["foo: bar", "baz: bim&quo

JS对象属性中get/set与getter/setter是什么

在js属性描述符这部分有几个较难理解的名词概念,本文旨在描述对它们的理解,主要包括:[[Get]]/[[Put]].get/set.getter/setter几个概念的阐述,数据属性和访问器属性. 属性 首先我们要搞清楚属性的概念,属性是存储在特定命名位置的值,是对象的内容,属性并不直接存储在对象容器内部.属性有两种类型:数据属性和访问器属性.属性具备了属性描述符,用来描述属性拥有的特性. 属性描述符 属性描述符用来描述属性特性的(只有在内部才能用的特性),配置属性是否可读,是否可写,是否可枚举

js对象属性特征

enumerable和configurable (function(){ 'use strict'; var point={x:1,y:2,z:3}; Object.defineProperty(point,'x',{ enumerable:false,//对象属性是否可枚举 configurable:false //对象属性是否可配置,不能删除,注意值是可以修改的 }); delete point.x;//x属性不可配置,所以x属性没有被删除,在严格模式下会抛出错误,非严格模式忽略 conso

js 对象属性遍历

function 对象属性遍历(){ var obj = {x:1,y:2,c:3};for (var name in obj){ alert ( obj[name] )} } function 数组(){ var 数组=[1,2,3,[1,2,4,5,7,8],4,5]; //数组嵌套数组 var 数组2=[ {x:100}, 2, [7,8,9], function(){ return 999; }(), "abc" ] var arr =new Array(10); arr[20

JS对象属性

1.数据属性 可以是js基本数据类型,对象类型,以$开始的属性表示私有属性, 具有value,可写性,可配置性(通过自有的方法配置),可枚举性,分别通过属性描述符value,writeable,configurable,enumerable标示 2.存取器属性(类似于面向对象语言中的方法) 具有读取,写入,可配置性(通过自有的方法配置),可枚举性(外界访问),通过set,get设置writeable,configurable,enumerable set setName(){}, get get

js对象属性与Bom

1JavaScript 的对象 1.1字符串 1.2Array对象 1.3Date对象 1.4Math对象 1.5Function对象(重点) 2 Bom对象 1   JavaScript对象 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的. 1.1字符串对象 字符串

JS 对象属性相关--检查属性、枚举属性等

1.删除属性 delete运算符可以删除对象的属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性  看到delete a.p之后b.x仍然为1 var a = {p:{x:1}}; var b = a.p; console.log(a.p.x); //1 delete a.p; console.log(a.p.x); //TypeError a.p