JS秘密花园1_对象

对象使用和属性
1.JavaScript 中所有变量都可以当作对象使用,除了两个例外 null 和 undefined。

2.访问属性
有两种方式来访问对象的属性,点操作符或者中括号操作符。

3.删除属性
删除属性的唯一方法是使用 delete 操作符;设置属性为 undefined 或者 null 并不能真正的删除属性, 而仅仅是移除了属性和值的关联。

 

原型
JavaScript 不包含传统的类继承模型,而是使用 prototype 原型模型。
第一个不同之处在于 JavaScript 使用原型链的继承方式。

属性查找
注意: 不要使用 Bar.prototype = Foo,因为这不会执行 Foo 的原型,而是指向函数 Foo。 因此原型链将会回溯到 Function.prototype 而不是 Foo.prototype,因此 method 将不会在 Bar 的原型链上。

性能
如果一个属性在原型链的上端,则对于查找时间将带来不利影响。特别的,试图获取一个不存在的属性将会遍历整个原型链。
当使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问。

扩展内置类型的原型
一个错误特性被经常使用,那就是扩展 Object.prototype 或者其他内置类型的原型对象。

 

hasOwnProperty 函数
为了判断一个对象是否包含自定义属性而不是原型链上的属性, 我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。
hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数。
注意: 通过判断一个属性是否 undefined 是不够的。 因为一个属性可能确实存在,只不过它的值被设置为 undefined。

 

for in 循环
推荐总是使用 hasOwnProperty。不要对代码运行的环境做任何假设,不要假设原生对象是否已经被扩展了。

 

posted @ 2017-05-05 14:47  旧日回忆的山丘  阅读(192)  评论(0)    收藏  举报