javascript的Object对象

           今天无意中放到道格拉斯的关于javascript面向对象的一篇文章

            http://javascript.crockford.com/prototypal.html

     突然燃烧起了自己看看现在的原生对象Object的具体问题。发现msdn上面也有啦,自己的js知识实在是太缺乏啦。

他老人家在08年写的,我居然都没有去研究Object里面的对象和属性

The problem with the object function is that it is global, and globals are clearly problematic. The problem with 、、/**Object.prototype.begetObject is that it trips up incompetent programs, and it can produce unexpected results when begetObject is overridden.

So I now prefer this formulation:
**/
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}
newObject = Object.create(oldObject);


//测试了一番发现IE8还是不支持这些属性但是在msdn上面又看到这些属性,估计是在ie10或者9中才有这些东西,现在IE貌似已经跟标准慢慢在靠近啦。。
//msdn的描述
在以下文档模式中受支持:Internet Explorer 9 标准模式和 Internet Explorer 10 标准模式。Windows 应用商店 应用程序中也支持此项。请参见版本信息。

在以下文档模式中不受支持:Quirks、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式、Internet Explorer 8 标准模式。

我也就顺着看看Object其他自己没有了解的东西,现在做移动混合开发正好需要这些知识,Object.create();直接就创建啦一个对象而且继承了父对象的原型属性,虽然没有继承父对象的静态属性,不过那个可以通过in来实现,继承的不多说。多舒服啊。

Object.seal(object);//用来是一个对象不可被编辑
Object.freeze(object)//相反
Object.isSealed(ob);//是否是不可编辑的
Object.isFrozen(ob);//是否是解封的
Object.preventExtensions(a);//是否让对象可继承
Object.isExtensible(a);//检测对象是否可继承
var a={aa:3};Object.preventExtensions(a);Object.isExtensible(a);
false
也有很多比较实用的工具类
Object.keys({a:3,b:4});//获取对象的key
将一个或多个属性添加到对象,并/或修改现有属性的特性。
object.defineProperties(object, descriptors)
object.defineProperty(object, descriptor)

Object.getOwnPropertyNames(Object);
["seal", "isSealed", "defineProperties", "defineProperty", "getPrototypeOf", "getOwnPropertyNames", "getOwnPropertyDescriptor", "caller", "freeze", "keys", "length", "prototype", "is", "create", "isFrozen", "isExtensible", "preventExtensions", "name", "arguments"]

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值