对象

作者: 酱油腌制 | 来源:发表于2016-12-16 18:18 被阅读0次

1.JavaScript的简单数据类型包括数字、字符串、布尔值(true和false)、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变的。

JavaScript中的对象是可变的键控集合(keyed collections)

属性的名字可以是包括空字符串在内的任意字符串。属性的之可以是除了undefined值之外的任何值。

JavaScript包含一种原型链的特性,允许对象继承另一个对象的属性。正确地使用它能减少对象初始化时消耗的时间和内存。

2.对象字面量

对象字面量可以出现在任何允许表达式出现的地方

如果属性名是一个合法的JavaScript标识符且不是保留字,则并不强制要求用引号括住属性名。

3.检索

检索一个并不存在的成员属性,将返回undefined.....TypeError

stooge["first-name"]  //"Jerome" 通用

flight.departure.IATA  // "SYD" 优先(合法标识符且不是保留字)

4.更新

如果属性名已经存在于对象里,那么这个属性的值就会被替换

如果对象之前没有拥有那个属性名,那么该属性就被扩充到对象中

5.引用

对象通过引用来传递。它们永远不会被复制。

var x = stooge;

x.nickname = 'Curly';

var nick = stooge.nickname;

// 因为 x 和 stooge 是指向同一个对象的引用,所以nick为‘Curly'。

var a = {}, b = {}, c = {};

// a、b和c每个都引用一个不同的空对象

a = b = c = {};

// a、b和c都引用同一个空对象

6.原型

每个对象都连接到一个原型对象,并且它可以从中继承属性。

所有通过对象字面量创建的对象都连接到Object.prototype(标配对象)。

原型连接在更新时是不起作用的。当我们对某个对象作出改变时,不会触及该对象的原型。

原型连接只有在检索值的时候才被用到。

委托

如果我们尝试去获取对象的某个属性值,但该对象没有此属性名,那么JavaScript会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,依此类推,直到该过程最后到达终点Object.prototype。如果想要的属性完全不存在于原型链中,那么结果就是undefined值。这个过程称为委托

(1)属性名

(2)原型对象属性值

(3)原型

7.反射   

typeof   原型链中的任何属性都会产生值

两个方法去掉这些不需要的属性, 第一个是让你的程序做检查并丢弃值为函数的属性。一般来说,当你想让对象在运行时动态获取自身信息是,你关注更多的是数据,而你应该意识到一些值可能会是函数。

另一个方法是使用hasOwnProperty方法,如果对象拥有独有的属性,它将返回true。hasOwnProperty方法不会检查原型链

8. 枚举

for in 语句可用来便利一个对象中的所有属性名。

属性名出现的顺序是不确定的。如果你想要确保属性以特定的顺序出现,最好的方法就是完全避免使用for in语句,而是创建一个数组,在其中以正确的顺序包含属性名。

通过使用for而不是 for in,可以得到我们想要的属性,而不用担心可能发掘出原型链中的属性,并且我们按正确的顺序取得了它们的值。

9.删除

delete运算符可以用来删除。

它不会触及原型链中的任何对象

删除对象的属性可能会让来自原型链中的属性透现出来

10.减少全局污染

全局性的资源都纳入一个名称空间之下

相关文章

网友评论

      本文标题:对象

      本文链接:https://www.haomeiwen.com/subject/qfmnmttx.html