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 可以很随意地定义全局变量来容纳你的应用的所有资源,但全局变量削弱了程序的灵活性,应该避免使用
减少全局变量污染的方法
- 为你的应用只创建一个唯一的全局变量(与其他的应用程序、组件或类库之间发生冲突的可能性就会显著降低)
- 使用闭包
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。