zoukankan      html  css  js  c++  java
  • ES5 object方法整理

    Object.getPrototypeOf(object):调用对象父类原型上的方法;
    function Person(){
        this.method1 = function(){alert(1)}
    }
    Person.prototype.method2 = function(){alert(2);}
     
    function Man(){
        this.m1 = function(){
            Object.getPrototypeOf(this).method1();
        }
    }
    Man.prototype = new Person();
     
    Man.prototype.m2 = function(){
        Object.getPrototypeOf(this).method2();
    }
     
     
    var man = new Man();
    man.m1();
    man.m2();
    
    
    Object.getOwnPropertyDescriptor(object, propertyname):获取对象中属性的ECMAScript对象;
    var obj = {};
    
    obj.a = "abc";
    
    var descriptor = Object.getOwnPropertyDescriptor(obj, "a");
    
    for(var prop in descriptor){
        document.write(prop + ': ' + descriptor[prop]);
        document.write("<br />");
    }
    
    /*
    configurable: true
    enumerable: true
    value: abc
    writable: true
    */
    Object.defineProperty(object, propertyname, descriptor):将ECMAScript对象设置为对象中的属性.
    var obj = {};
    
    obj.a = "abc";
    
    var descriptor = Object.getOwnPropertyDescriptor(obj, "a");
    descriptor.writable = false;
    Object.defineProperty(obj, "a", descriptor);
    for(var prop in descriptor){
        document.write(prop + ': ' + descriptor[prop]);
        document.write("<br />");
    }
    /*
    configurable: true
    enumerable: true
    value: abc
    writable: false
    */
    object.defineProperties(object, descriptors):用 ECMAScript对象 设置为object中多个属性的值.
    var obj = {};
    
    obj.a = "abc";
    
    Object.defineProperties(obj,{
        a:{
            configurable: true,
            enumerable: true,
            value: 'aaa',
            writable: false
        }
    });
    var descriptor = Object.getOwnPropertyDescriptor(obj, "a");
    for(var prop in descriptor){
        document.write(prop + ': ' + descriptor[prop]);
        document.write("<br />");
    }
    /*
    configurable: true
    enumerable: true
    value: aaa
    writable: false
    */
    Object.getOwnPropertyNames(object):返回一个由对象属性名组成的数组(包含不可枚举的)
    function a(){
        this.a='1';
    }
    a.prototype.b='2';
    var c=new a();
    c.c='3';
    alert(Object.getOwnPropertyNames(c));//a,c
    Object.create(prototype, descriptors):建立一个原型为[prototype](必需,可为NULL),[descriptors](可选)为ECMAScript对象的对象.
    var a = Object.create({a:1,b:2}, {
                c: {
                    value: "large",
                    enumerable: true
                },
                d: {
                    value: "round",
                    enumerable: true
                }
            });
    Object.seal(object):锁定对象,无法修改对象的属性,无法加入新的属性.并把ECMAScript对象的configurable设置为false;
    var obj = {};
    
    obj.a = "abc";
    Object.seal(obj);
    var descriptor = Object.getOwnPropertyDescriptor(obj, "a");
    
    
    for(var prop in descriptor){
        document.write(prop + ': ' + descriptor[prop]);
        document.write("<br />");
    }
    
    /*
    configurable: false
    enumerable: true
    value: abc
    writable: true
    */
    Object.freeze(object):冻结对象,无法修改对象的属性,无法加入新的属性.
    (与seal的区别为,freeze会把对象的数据属性的Writable设置为false)
    var obj = {};
    
    obj.a = "abc";
    Object.freeze(obj);
    var descriptor = Object.getOwnPropertyDescriptor(obj, "a");
    
    
    for(var prop in descriptor){
        document.write(prop + ': ' + descriptor[prop]);
        document.write("<br />");
    }
    
    /*
    configurable: false
    enumerable: true
    value: abc
    writable: false
    */
    Object.preventExtensions(object):避免加新属性加入对象(Extensible设置为false);
    var obj = { a: "1"};
    
    Object.preventExtensions(obj);
    document.write(Object.isExtensible(obj));//false
    
    obj.newProp = 50;
    document.write(obj.newProp);//undefined
    Object.isSealed(object);
    Object.isFrozen(object);
    Object.isExtensible(object);

    判断对象是否为锁定,冻结,不可扩展的.(如果一个对象是冻结的,那其肯定是密封的);

     
    
    
    var obj = { a: "1"};
    //Object.seal(obj);
    Object.freeze(obj);
    //Object.preventExtensions(obj);
    
    alert(Object.isSealed(obj));
    //alert(Object.isFrozen(obj));
    //alert(Object.isExtensible(obj));
    
    
    Object.keys(object):返回一个由对象可枚举的属性组成的数组.
    
    
    function a(){
        this.a='1';
    }
    var b=new a();
    alert(Object.keys(b));//a
    
    
    
     
  • 相关阅读:
    js数组合并
    火狐浏览器打开新标签不断刷新,怎么解决?
    python获取当前路径
    python模块os
    python模块sys
    python玩丢手绢问题,出局的顺序
    python list元素为dict时的排序
    利用等概率Rand5产生等概率Rand3(转)
    python垃圾回收机制(转)
    负数在计算机中如何表示?(转)
  • 原文地址:https://www.cnblogs.com/makan/p/4725239.html
Copyright © 2011-2022 走看看