Js通过.或者[]访问对象属性的语法、性能等区别

时间: 2018-02-09阅读: 3433标签: 对象

JavaScript中可以使用 . 或者 [ ] 来访问对象的属性,但是对象中方法只能通过 . 来获取,例如:

function Person() {
  this.name=" 张三 "; // 定义一个属性 name
  this.say=function(){ // 定义一个方法say()
    return "我的名字是 " + this.name ;
  }
}
var a=new Person();
console.log("姓名:"+a.name); // 使用“.”来访问对象属性
console.log("姓名:"+a["name"]); // 使用“[ ]”来访问对象属性
console.log(a.say());  // 使用“.”来访问对象方法

使用”."运算符来存取对象的属性的值。或者使用[]作为一个关联数组来存取对象的属性。但是这两种方式有什么区别了?  


1.语法方面的区别

点表示法的对象的属性名是标识符,而后者的属性名则是一个字符串。


2.灵活性方面的区别

JavaScript编写程序中,可以为对象创建任意数目的属性。但使用”.“运算符来存取一个对象的属性时,属性名是用标识符表示的。而在JavaScript程序中,标识符必须被逐字地输入,它们不是一种数据类型,因此程序不能对其操作。也就是说,标识符是静态的,在程序中必须对其进行硬编码。

而使用数组[]表示法来存取一个对象的属性时,属性名是用字符串表示的。字符串是JavaScript的一种数据类型,因此可以在程序运行中操作并创建它们。


3.性能方面区别

数组[]表示法在存取属性值时会进行表达式运行。而点表示法是直接存取属性值,理论上执行效率会比数组表示法高。性能方面其实可以忽略。

某些场景必须用到数组表示法来动态存取属性值,这个是点表示法无法做到的。


总的来说,这两种方法区别上不大,都有对应的使用场景。点表示法一般作为静态对象使用时来存取属性。而数组表示法在动态存取属性时就非常有用。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/427

Js ES6 Promiss对象

Node.js中,以异步(Async)回调著称,使用了异步,提高了程序的执行效率,但是,代码可读性较差的。假如有几个异步操作,后一个操作需要前一个操作的执行完毕之后返回的数据才能执行下去,如果使用Node.js,就需要一层层嵌套下去

js是面向对象还是基于对象?

以前感觉这两个在本质上没有什么区别,面向对象和基于对象都是对一个抽象的对象拥有一系列的行为和状态,本质都是对象层。我们就能够理解JavaScript面向对象设计的思路。

JavaScript Blob 对象解析

Blob是JavaScript内建对象,表示不可变的原始数据,类似文件的对象。blob是表示原始数据的不可变对象,这些数据不一定是javascript原生格式的,文件接口基于Blob,继承Blob功能并将其扩展为支持用户系统上的文件。

你真的理解ES6的Class吗?

在面向对象的编程中,类是一个用于创建对象,为状态(成员变量)和行为实现(成员函数或方法)提供初始值的可扩展程序代码模板。在实际开发中,我们往往需要创建很多相同类型的对象,如用户、商品或其他对象。

javascript中内置对象和浏览器对象的区别是什么?

JavaScript对象是包含相关属性和方法的集合体。在 JavaScript 中,对象是数据(变量),拥有属性和方法。在javascript中对象通常包括两种类型:内置对象和浏览器对象,此外,用户还可以自定义对象。

如何在 JavaScript 中使用对象的方法

JavaScript 中,对象是 键/值 对的集合。值可以包含属性和方法,并且可以包含所有其他 JavaScript 数据类型,例如字符串,数字和布尔值。JavaScript中的所有对象都来自父 Object 的构造函数。

JS Object对象

Object(对象)是在所有的编程语言中都十分重要的一个概念,对于事物我们可以把他们看作是一个对象,而每一个事物都有自己的表示的属性和对于某一信息作出的相应的操作。而这些东西就变成了事物的属性和方法。

ES6 之 对象的简写方式

简写有两条基本原则:同名的属性可以省略不写;对象中的方法中的 : function 可以省略不写;来看下下面这个例子我分别用ES5 和 ES6 的语法分别定义并声明了一个简单的学生对象

JS对象Object常用方法整理

hasOwnProperty():返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。isPrototypeOf():用于测试一个对象是否存在于另一个对象的原型链上。toString():返回一个表示该对象的字符串。

Js解构赋值的应用

用对象解构表达式作为函数的参数时,一定要设置一个默认值。如果没有默认值,调用函数时不传参数,会导致解构报错。函数使用对象解构参数,可以很方便的设置各种默认值,而且参数顺序没有限制,只要可以成功解构即可,用处还是很大的。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!