犀牛书随手记-03

关于Js中的对象,除了值和名字以外,每个属性还有一些与之相关的值,称为“属性特性”
· 可写
· 可枚举
· 可配置
在ECM5之前代码所创建的对象的属性都是可写,可枚举,可配置的,但是在之后,是可以对这些属性进行配置的

JS中对象原型的概念(可参考粗浅的原型链看法
在ECMAscript 5中提供了Object.create(‘第一个参数就是要创建的这个对象的原型’,’可选参数’)
举个栗子

var p1 = Object.create({"name":"xiaoTuiMao","age":"12"})
var p2 = Objext.create(null);
var p3 = Objext.create(Object.prototype)
//p1.__proto__就是{"name":"xiaoTuiMao","age":"12"}
//p2将不继承任何属性跟方法
//p3等价于创建一个空对象 {}或new Object

既然是这样的话 那么我们创建一个继承一个来自于另一个对象的对象将会变的便捷
举个栗子

 function createObject(p) {
        if (p == null) throw new TypeError();
        if(Object.create){
            return Object.create(p);
        }
        var t =typeof p;
        if(t !="object"&&t !="function") throw TypeError();
        function f(){};
        f.prototype = p;
        return new f();
    }

关于Object中的.跟[]
当用 . 访问对象的属性时,属性名用一个标识符来表示。标识符必须出现在js程序中,他们不是数据类型,因此程序无法修改他们(eval除外)。
举个栗子

var obj = {n1:1,n2:2};
var a=0 , b=0;
for(i=1;i<3;i++){
    a+=obj["n"+i];
    b+=eval("obj."+i);
}
//a跟b 均为 3 虽然可以用eval .实现了[]一样的动态操作属性名,但是不推荐使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值