zoukankan      html  css  js  c++  java
  • (译)ECMAScript 5 Objects and Properties (二)

    继  

       (译)ECMAScript 5 Objects and Properties 

       全文地址 http://ejohn.org/blog/ecmascript-5-objects-and-properties/

       @by Aaron

    新功能

    新增加一些有趣的新特性已经被引入到语言

    以下两个方法是非常有用的,用于收集所有的属性的数组对象。

    Object.keys( obj )

    将会返回一个字符串格式的数组表示所有可枚举的对象属性名,相同方法的一个实现

    代码实现:

    Object.keys = function( obj ) {
      var array = new Array();
      for ( var prop in obj ) {
        if ( obj.hasOwnProperty( prop ) ) {
          array.push( prop );
        }
      }
      return array;
    };

    示例用法:

    var obj = { name: "John", url: "http://ejohn.org/" };
     
    print( Object.keys(obj).join(", ") );
    // name, url

    Object.getOwnPropertyNames( obj )

    几乎所有用Objet.keys返回对象的所有属性名(不只是可枚举的的)

    Object.create( proto, props )

    创建一个新对象的原型是等于值的原型并通过对象的属性设置 Object.defineProperties( props ).

    示例实现

    Object.create = function( proto, props ) {
      var ctor = function( ps ) {
        if ( ps )
          Object.defineProperties( this, ps );
      };
      ctor.prototype = proto;
      return new ctor( props );
    };

    另外的实现:

    Object.create = function( proto, props ) {
      var obj = new Object();
      obj.__proto__ = proto;
     
      if ( typeof props !== "undefined" ) {
        Object.defineProperties( obj, props );
      }
     
      return obj;
    };

    说明:

      以上代码可以用mozilla特定原型属性,这个属性允许您访问一个对象的内部原型-并且允许你设置它的值,同样,ECMA5的方法Object.getPrototypeOf也允许你访问这个值,但是不能过设置这个值-因此上述方法不能实现一个通用的、规范兼容的方式

    示例用法:

    function User(){}
    User.prototype.name = "Anonymous";
    User.prototype.url = "http://google.com/";
     
    var john = Object.create(new User(), {
      name: { value: "John", writable: false },
      url: { value: "http://google.com/" }
    });
     
    print( john.name );
    // John
     
    john.name = "Ted"; // Exception if in strict mode

    Object.seal( obj )
    Object.isSealed( obj )

  • 相关阅读:
    GIT在Linux上的安装和使用简介心得
    Android开发环境使用到工具的认识心得
    Android系统移植与驱动开发心得
    嵌入式Linux的调试技术
    硬件抽象层——HAL
    Linux代码的重用与强行卸载Linux驱动
    控制发光二极管
    详细讲解Linux驱动程序
    搭建测试环境——针对S3C6410开发板
    有了源代码,当然还需要编译喽!!
  • 原文地址:https://www.cnblogs.com/aaronjs/p/3139448.html
Copyright © 2011-2022 走看看