• es5 api


    ES5

    • Object.create(prototype, descriptors)

        //创建对象
        var o1 = {foo:'bar'};
        var o2 = new Object();
        //Object.create(proto,[descriptors]);
        var o3 = Object.create(null);
        
        function Person(name) {
        	this.name = name;
        }
        var p1 = new Person('sindy');
        var p2 = Object.create(Person.prototype, {
        	age: {
        		value: 18,
        		writable: false,
        		enumerable: false,
        		configurable: true,
        		//value , writable 和 getter setter函数不能同时设置
        		/*get: function () {
        			if (typeof age === 'undefined') {
        				return 'not set age value yet';
        			} else {
        				return 'your age:' + age;
        			}
        		},
        		set: function (a) {
        			age = a;
        			if (this.cTime == 0) {
        				console.log('set age OK');
        				this.cTime++;
        			} else {
        				console.log('change age OK');
        			}
        		}
        	},*/
        	cTime: {
        		value: 0,
        		writable: true
        	}
        });
      
    • Object.defineProperty(object, propertyName, descriptor)

        var p1 = new Person('alice');
        Object.defineProperty(p1, 'name', {value:'alice2', writable:true, enumerable: false, configurable: false});
        console.log(p1.name); //=> alice2
        delete p1.name; //=> false
        
        configurable==flase,不能defineProperty重定义属性特性
        Object.defineProperty(p1, 'name', {value:'kk', enumerable: true}); //=>error
      
    • Object.defineProperties(object, descriptors)

      var p1 = new Person('alice');
      Object.defineProperties(p1,{
      skill:{
      value: 'singing',
      writable: true,
      enumerable: true,
      configurable: false
      },
      age: {
      value: 18,
      writable: true,
      enumerable: true,
      configurable: false
      }
      });
      p1.age //18
      p1.skill //singing

    • Object.getOwnPropertyDescriptor(obj, propertyName)
      获取自有属性的descriptor

        function Person (n){ this.name = n; }
        Person.prototype = {
        	constructor: Person,
        	hi: function(name){ console.log('hi,'+name);}
        };
        var p1 = new Person('alice');
        var nameDescriptor = Object.getOwnPropertyDescriptor(p1, 'name');//=>{value:'alice', enumerable: true, writable: true, configurable: true}
        
        var des = Object.getOwnPropertyDescriptor(p1, 'hi');//=>undefined
      
    • Object.getOwnPropertyNames(obj)
      获取对象所有的自有属性名

        //接上
        p1.age = 11;
        var props = Object.getOwnPropertyNames(p1); //=> ['name', 'age']
      
    • Object.preventExtensions(obj)
      禁止扩展对象,即不能添加属性到对象上。

        //接上
        Object.preventExtensions(p1);
        p1.home = 'HK';
        console.log(p1.home); //=> undefined
      
    • Object.isExtensible(obj)
      判断对象是否可扩展

        //接上
        Object.isExtensible(p1);//=> false
      
    • Object.seal(obj) , Object.isSealed(obj)
      若对象为isSeal状态则不能添加或删除属性, 但可以修改现有属性的值

        //接上
        Object.seal(p1);
        Object.isSealed(p1); //true
        delete p1.name;//=>false
        p1.like = 'shopping';
        console.log(p1.like); //=> undefined
      
    • Object.freeze(obj) , Object.isFrozen(obj)
      冻结对象(不能添加或删除属性,不能修改现有属性) freeze -> seal -> configurable:false 限制的严格程度递减

        Object.freeze(p1);
        Object.isFrozen(p1); //=> true
        p1.name = 'alice2';
        console.log(p1.name); //=> alice
        p1.school = 'hkzw';
        console.log(p1.school); //=> undefined
      
    • Object.getPrototypeOf(obj);
      获取对象的原型对象

        var proto = Object.getPrototypeOf(p1);//=>{constructor: Person, hi: function(){..}}
      
    • Array.isArray(arg)

    • [].indexOf(val,[pos])

    • [].lastIndexOf(val, [pos])

    • [].every(fn(v, i, arr),[context])

    • [].some(fn(v,i, arr), [context])

    • [].forEach(fn(v, i, arr), [context])

    • [].filter(fn(v, i, arr), [context])

    • [].map(fn(v, i, arr), [context]);

    • [].reduce(fn(prev, curr, i, arr), [primitive]);

    • [].reduceRight(fn(prev, curr, i, arr), [primitive]);

    • new Date().toJSON()
      序列化日期对象 输出: "2016-03-14T07:36:09.602Z"

    • String.prototype.trim
      删除字符串两端空格 (" touch ").trim(); => touch

  • 相关阅读:
    2014年7顶级编程语言一个月
    Swift学习 --- 2.3和字符串
    自己写CPU第五级(4)——逻辑、实现移动和空指令
    读书笔记-互联网思维阅读10其中一本书《自由》
    Linux学习笔记——如何使用共享库交叉编译
    Vim识别编码
    linux RWT
    GConf 错误:联系配置服务器失败;某些可能原因是需要为 ORBit 启用 TCP/IP 联网
    Mysql 表忽略大小写~~
    andorid studio
  • 原文地址:https://www.cnblogs.com/stephenykk/p/5275943.html
Copyright © 2020-2023  润新知