为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
493人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 序列化 通过全局的JSON.stringify(obj);做序列化处理 注意: 1、当你对象中有属性的值是undefined的时候,这该属性是不会出现在序列化字符串的结果里 2、当你属性的值是NaN或者Infinity时,序列化的结果是null;当你的属性值是new Date(),序列化的结果是UTC的时间格式 后端返回来JSON数据时,采用JSON.parse来转化;合法的JSON的属性必须用双引号引起来 想要自定义序列可以改写toJSON方法
    查看全部
  • 1、class:表示对象是哪一个类型 Object.prototype.toString()会把参数先变为对象 2、extensible 对象是否可以扩展,默认为true 3、通过Object.isExtensible(obj)判断是否可扩展; 通过Object.preventExtensions(obj)阻止增加新的属性,但是要加上Object.seal(obj)才算是真正的限制修改、删除,此时(configurable = false)。通过Object.isSealed(obj) //判断是否被隐藏。 4、通过Object.freeze是更进一步(writeable和configurable都为false) Object.isFrozen(obj) //判断对象当前是否被冻结 Object.freeze对与原型链上的没有影响。 Object.preventExtensions() 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。 Object.seal() 方法可以让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可能可以修改已有属性的值的对象。 Object.freeze() 方法可以冻结一个对象。冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。 注意:上述提到的方法只是针对某个对象的,比如说冻结一个对象时,并不会影响对象的原型链,如果想对原型链做类似处理的话,可以通过Object.prototypeof()的方法拿到对象的原型,一层层遍历,然后freeze
    查看全部
  • class 标签,获取类名称 slice(8,-1) 字符串,相当于去掉中括号[],例如 "[object Null]" ==> "Null"
    查看全部
  • 属性标签
    查看全部
  • 属性标签,在configurable:true,writable:false;时,可以通过Object.defineProperty()来修改writable的值从而重设value标签的值
    查看全部
  • 属性标签
    查看全部
  • 特别注意: 1、如果configurable是true那么即使writeable为false,但是也可以通过Object.definePorperties方法去修改 2、Object.defineProperties(),第一个参数要定义的对象,第二个参数复杂的对象,(属性名,属性值,属性标签) 3、getOwnPropertyDescriptor 获取指定对象自己的属性描述符。 自己的属性描述符是直接在对象上定义的描述符,而不是从对象的原型继承的描述符。
    查看全部
  • Object.defineProperties创建多个属性 Object.keys( obj )获取对象的可枚举属性 configurable为false情况下,只有将writable从true修改为false是允许的,其他一概不可
    查看全部
  • value(true/false):属性是否有值 writable(true/false):属性是否可以修改,是否可写 enumerable(true/false):属性是否可以遍历、枚举 configurable(true/false):属性是否可以再被修改;也表示可不可以通过delete方式删除掉该属性,true表示可以删除,false表示不可以删除 Object.defineProperty( obj , property, value )创建single属性[ value, writable, configurable, enumerable]默认为false Object.getOwnPropertyDescriptor( obj, property)查看对象的四个属性标签[ value, writable, configurable, enumerable]。如果property与obj名称不一样的话,则返回undefined. Object.keys( obj )获取对象的可枚举属性
    查看全部
  • get set方法也会与属性一样关联原型链,所以上面的obj.z=10不会在[[proto]]里面创建新的z属性,所以obj.z;//still 1。 如果想要使obj.z;值改变,采用Object.deineProperty 添加新的z属性,其默认writable=false configurable=false。
    查看全部
  • get/ set 方法,逗号分隔,get 读取,set 赋值。
    查看全部
  • 左侧,不可枚举的 for in 时,不会出来 右侧,Obj.a=4 是可遍历的,将对象自己的属性和原型链上的属性都遍历出来了 遍历时用hasOwnProperty(key) 过滤原型链上的属性
    查看全部
  • 自定义一个对象属性,让它的枚举标签是false Object.defineProperty(添加属性的对象,属性的名字,一个对象可以设置一些标签)默认的enumerable是false。。。用这种方法定义的属性标签都默认为是false
    查看全部
  • defineProperty() 设置对象属性 propertyIsEnumerable()判断属性是否可枚举; hasOwnProperty() 是否自有属性,而非来自原型链继承
    查看全部
  • var定义的全局变量和局部变量不能被删除 全局函数和函数内部局部作用域的函数也不可被删除 在eval里用var定义的函数可以被删掉
    查看全部

举报

0/150
提交
取消
课程须知
1.您至少学习了本站“JS入门”、“JS进阶”两门基础课程。 2.如您具备一定实践经验对学习有很大帮助。 3.如您没有脚本编程开发经验,学习过程有可能会受挫部分内容或示例代码,请“暂时略过不懂的部分,后面章节会阐述”,当然想透彻学习,还需大量实践来体会知识的内涵。
老师告诉你能学到什么?
结合实例,深入解析以下知识内容: 1. 数据类型、表达式和运算符、语句; 2. 对象、数组、变量、函数; 3. this、闭包和作用域; 4. OOP; 5. 正则与模式匹配。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!