博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es5_Object
阅读量:6825 次
发布时间:2019-06-26

本文共 2429 字,大约阅读时间需要 8 分钟。

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, yield17.call/apply的第一个参数直接传入不包装为对象18.call/apply的第一个参数为null/undefined时,this为null/undefined19.bind的第一个参数为null/undefined时,this为null/undefined

转载地址:http://culzl.baihongyu.com/

你可能感兴趣的文章
创建线程的三种方式
查看>>
Android项目依赖于第三方库(非jar包文件)
查看>>
cas HttpServletRequestWrapperFilter
查看>>
【Javascript第二重境界】函数
查看>>
SpringBoot 与 Web开发
查看>>
JavaWeb 三层框架
查看>>
BOOL, BOOLEAN, bool
查看>>
Mac 下 SVN 的使用
查看>>
简述session
查看>>
Android APK反编译教程(带工具)
查看>>
SSO单点登录学习总结(1)——单点登录(SSO)原理解析
查看>>
Windows学习总结(12)——Windows 10系统开始运行-cmd命令大全
查看>>
单元测试过程
查看>>
新学的的matplotlib库~~~~
查看>>
【树形dp】vijos P1180 选课
查看>>
实验三
查看>>
Codeforces Round #363 (Div. 2)
查看>>
HDU 6141 - I am your Father! | 2017 Multi-University Training Contest 8
查看>>
日期操作
查看>>
angularjs中ng-repeat-start与ng-repeat-end用法实例
查看>>