JS 对象

javascript 的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”貌似对象,因为他们拥有放飞,但他们是不可变的。javascript中的对象是可变的键控集合,并且对象是无类型的。
javascript 包含一种原型链的特性,允许对象继承另一个对象的特性。正确地使用它能减少对象初始化时消耗的时间和内存。

对象字面量

对象字面量提供一种非常方便创建新对象值的表示法。
在对象字面量中,如果属性名是一个合法的 javascript 标识符且不是保留字,则并不强制要求用引号括住属性名

检索

1、 []中括住一个字符串表达式
2、 . 表示法

更新

对象里的值通过赋值语句来更新

引用

对象通过引用来传递,但他们永远不会被复制

原型

字面量创建对象的原型

每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到 Object.prototype,它是javascript 中的标配对象。

为创建的新对象指定它的原型

创建一个新对象时,我们可以给对象指定它的原型

if(typeof Object.create !== 'function') {
      Object.create = function(o) {
          var F = function(){};
           F.prototype = 0;
            return new F();
      };
}

原型连接

  • 原型连接在更新时是不起作用的。当我们队某个对象做出改变是,不会触及该对象的原型
  • 原型连接只有在检索值的时候才被用到(如果我们尝试去获取对象的某个属性值,但该对象没有此属性名,那么javascript会试着从原型对象中获取属性值。如果原型对象也没有改属性,那么再从它的原型中寻找,以此类推,直到过程最后达到终点Object.prototype。如果想要的属性完全不存在与原型链中,那么结果就是undefined值。这个过程称为委托
  • 原型关系是一种动态关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见

反射

当你想让对象在运行时动态获取自身信息时,我们关注的更多的是数据,而对象的一些更多的值为函数,有两种方式帮我们处理:

  • 让程序做检查并丢弃值为函数的属性(typeof 值为 function)
  • 使用hasOwnProperty 方法,如果对象拥有独有的属性,它将返回true。hasOwnProperty 方法不会检查原型链

枚举

for in 语句可用来边里一个对象中的所有属性名。该枚举过程将会列出所有的属性,包括函数和你可能不关心的原型中的属性,并且属性的顺序是不确定的,所以有必要过滤掉那些你不想要的值。

  • hasOwnProperty 和 typeof 来排除函数
  • for 循环,自定义自己想要的属性和顺序,然后通过for循环,不用担心发掘原型链中的属性,并且我们按照正确的顺序取得了他们的值

减少全局变量污染

javascript 可以很随意地定义全局变量来容纳你的应用的所有资源,但全局变量削弱了程序的灵活性,应该避免使用
减少全局变量污染的方法

  • 为你的应用只创建一个唯一的全局变量(与其他的应用程序、组件或类库之间发生冲突的可能性就会显著降低)
  • 使用闭包
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,423评论 0 6
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,634评论 0 21
  • 对象: 1. 对象中包含一系列的属性,这些属性是无序的。 2. 每个属性都有一个字符串key和对应的value;(...
    一树青枫阅读 2,720评论 0 1
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,677评论 0 13
  • 词:张半仙 一位摇晃的诗人 他的酒瓶是空的 听说,他能吟诗作曲 可惜,胸膛装满病毒 //S...
    张半仙随笔阅读 1,417评论 0 1