对象

开头

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

JavaScript中的对象是可变的键控集合。

对象字面量

一个对象字面量就是包围在一对花括号中的零或多个“名/值”对。其中,属性名可以使包括空字符串在内的任何字符串。

检索

  • 检索对象里包含的值,2种方法。
    1、stooge[‘time]
    2、flight.status
    若不存在返回undefined
  • ||运算符可以用来填充默认值“
    var middle = stooge[“name”]||”unknown”
  • 尝试从undefined的成员属性中取值将会导致TypeError异常。
flight.equip    //undefined
flight.equip.model   //throw "typeERROR"
flight.equip && flight.equip.model//undefined

引用

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都引用同一个空对象

原型

所有通过字面量创建的对象都连接到Object.prototype,它是Javascript中的标配对象.
新建对象时,可选择某个对象作为她的原型。通过给Object增加一个create方法。

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

原型链接在更新时不起作用。当对某个对象做出改变时,不会触及该对象的原型。
原型链只有在检索值的时候才被用到。
原型关系是一种动态的关系。若添加一个新的属性到原型中,该属性会立即对所有基于该原型的对象可见。

stooge.pro = 'actor'
another_stooge.pro  //'actor'

反射

typeof 操作符对确定属性的类型很有帮助。原型链中的任何属性都会产生值。

  • hasOwnProperty 若对象哟拥有独有的属性,它将返回true。hasOwnProperty 不会检查原型链。

枚举 for in

for in 语句可用来遍历一个对象中的所有属性名。包括函数和可能不关心的原型中的属性。因此需要hasOwnProperty和typeof来排除函数。属性名出现的顺序是不确定的,因此需要对如何可能出现的顺序有所准备。若想要确保属性以特定顺序出现,最好的办法是避免使用for in,而创建一个数组,在其中以正确的顺序包含属性名:

var i ;
bar properties = [
'first-name'.
'middle-name',
'last-name',
'profession'
];
for (i = 0; i < properties.length; i+=1 ){
    document.writeln(properties[i]+":"+
        another_stooge[properties[i]]);
        }

删除

delete运算符可以用来删除对象的属性。若对象包含该属性,则该属性就会被删除。但它不会触及原型链中的如何对象。
删除对象的属性可能会让来自原型链中的属性透视出来

anther_stooge.nickname //'more'


//删除another_stooge的nickname属性,从而暴露出原型的nickname属性。
delete another_stooge.nickname;

another_stooge.nickname//'Curely'

减少全局变量污染

为应用创建一个唯一的全局变量:

var MYAPP = { }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值