es5_Object

es5_Object

creat(指定propto,):

let obj = {
        x:1,
        y:2
    };
//es5
    let obj2 = Object.create(obj,{
        z:{
            value:3
        }
    });
    
//es6
    let obj3={
        __proto__:obj,
        z:3
    }
    console.log(obj2);//打印Object {z: 3};
    console.log(obj3);//打印Object {z: 3};
    console.log(obj2.x);//打印1;

Object.defineProperty() 用来给对象定义属性的:

let obj = {
        x:1,
        y:2
    }
    obj.k=3;
    Object.defineProperty(obj,"j",{
            value:4,
            writable:true,  //可写
            enumerable:true,  //可遍历
            configurable:true  //可配置
    });

Object.defineProperties() 给对象指定对个属性:

Object.defineProperties(obj,{
        "m":{
            value:"m1"
        },
        "l":{
            value:"l1"
        }
    })
    obj.j=50;
    obj.k=50;
    console.log(obj);//打印Object {x: 1, y: 2, k: 50, j: 50, m: "m1",l:"l1"};
            
    for(var key in obj){
        console.log(key);//打印x y k j;
    };

获取,设置:

  • getOwnPropertyDescriptor()用来获取属性的描述:

console.log(Object.getOwnPropertyDescriptor(obj,"x"));//打印Object {value: 1, writable: true, enumerable: true, configurable: true};
  • Object.keys()用来返回对象的key值:

console.log(Object.keys(obj));//打印["x", "y", "k", "j"];
  • Object.getOwnPropertyNames()获取所有属性名:

console.log(Object.getOwnPropertyNames(obj));//打印["x", "y", "k", "j", "m", "l"];
  • Object.preventExtensions():

Object.preventExtensions(obj);
//让一个对象不可扩展,该对象无法再添加新的属性,但是可以删除现有属性;
  • Object.seal() :

Object.seal(obj);
//对一个对象密封,该方法会阻止对象扩展,并将该对象的所有属性设置为不可配置;
  • Object.freeze() :

Object.freeze(obj);
//对一个对象进行冻结,实现常量的需求,该方法会阻止对象扩展,并冻结对象,将其所有属性设置为只读和不可配置;
  • Object.isExtensible():

Object.isExtensible(obj);
//判断对象是否扩展;
  • Object.isSealed():

Object.isSealed(obj);
//判断对象是否密封;
  • Object.isFrozen():

Object.isFrozen(obj);
//判断对象是否冻结;
//writable:false不可改,true可改;
//enumerable:false不可遍历,true可遍历;
//configurable:false不可配置,true可配置;

‘use strict’:

  • 严格模式 1.弃用了很多以前版本的语法,如果在用的话就提示错误;

  • 严格模式 2.让你使用一些最新版本的语法;有些浏览器不支持新版本的语法,加上严格模式就支持了;

下面就是严格模式总结::

1.使用var声明变量严格模式中将不通过
2.何使用'eval'的操作都会被禁止
3.val作用域
4.ith被禁用
5.aller/callee 被禁用
6.禁止扩展的对象添加新属性会报错
7.除系统内置的属性会报错
8.delete使用var声明的变量或挂在window上的变量报错
9.delete不可删除属性(isSealed或isFrozen)的对象时报错
10.对一个对象的只读属性进行赋值将报错
11.对象有重名的属性将报错
12.函数有重名的参数将报错
13.八进制表示法被禁用
14.arguments严格定义为参数,不再与形参绑定
15.函数必须声明在顶层
16.ES5里新增的关键字不能当做变量标示符使用,如implements, interface, let, package, private, protected, pulic, static, yield
17.call/apply的第一个参数直接传入不包装为对象
18.call/apply的第一个参数为null/undefined时,this为null/undefined
19.bind的第一个参数为null/undefined时,this为null/undefined
    原文作者:songze
    原文地址: https://segmentfault.com/a/1190000010309825
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞