-
extensible 是否可以扩展,默认为true 通过Object.isExtensible(obj)判断 通过Object.preventExtensions(obj)阻止增加新的属性, 但是要加上Object.seal(obj)才算是真正的限制修改、删除(configurable = false) Object.isSealed(obj) //判断 通过Object.freeze是更进一步(writeable和configurable都为false) Object.isFrozen(obj) //判断 Object.freeze对与原型链上的没有影响 bject.preventExtensions() 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。 Object.seal() 方法可以让一个对象密封,并返回被密封后的对象。密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可能可以修改已有属性的值的对象。 Object.freeze() 方法可以冻结一个对象。冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。也就是说,这个对象永远是不可变的。该方法返回被冻结的对象。 序列化 JSON.stringify(obj) 1、如果值是undefined, 那么是不出现在序列化中的 2、NaN和Infinity是会转成null 3、时间会转成UTC格式 通过JSON.parse('{}');方法反序列化 valueOf是返回对象原始值,toString是将转化成字符串。 valueOf - 尝试把对象转换为基本类型时自动调用的函数,可自己定义 使用一元运算符 + 可转换为数字 当toString 和 valueOf 同时存在,先寻找valueOf,如果不存在或不合法的值(为对象),则再寻找toString;否则使用valueOf的方法。查看全部
-
Object.prototype.toString.apply();判断数据类型。查看全部
-
Object.getOwnPropertyDescriptor({pro:true},'pro') 查看某个对象都有哪些属性标签,第一个参数要判断的对象,第二个参数字符串的属性名 writable:属性是否可以修改,是否可写 enumerable:属性是否可以被遍历,影响for in中是否会出现 configurable:这些属性标签是否可以修改,属性是否可以删除 Object.keys(person);//查找对象的时候只会返回enumerable=true的属性 Object.defineProperties(),第一个参数要定义的对象,第二个参数复杂的对象,(属性名,属性值,属性标签)查看全部
-
1.get name(){} 2.set name(){} 3.类型判定 4.Object.deineProperty 默认writable=false configurable=false 5.get set方法也会与属性一样关联原型链 6.优先this,之后super Object.defineProperty(obj, 'x', {writable:true, configurable:true, value: 100}); 当前对象不能找到,就向原型链上找,get,get优先级大于当前对象查看全部
-
delete person.age //删除属性,全局属性不能被delete Object.creat(xxx); //xxx为原型创建,注意,此处并非将xxx直接赋值给新实例的原型,而是相当于创造一个副本,然后再将副本作为新实例的原型 obj.propertyIsEnumerable('xxx'); //是否枚举 obj.hasOwnProperty('xxx'); //是否为本对象属性 Object.defineProperty(对象,'属性',{配置参数}); //配置属性 for(var key in val){ //遍历包括原型可枚举属性,遍历顺序不确定,如要顺序遍历需用for //遍历内容 }查看全部
-
原型链: 1.hasOwnProperty() 构造函数属性判断方法。 2.in操作符, 包含原型链 3.delete 只能删除对象上属性,不会删除原型属性。 4.字面量对象有默认原型。 5. var obj=Object.create(null); obj.toString //undefined查看全部
-
对象 1.属性无序 key为字符串 2.属性可动态增加删除 writable/enumerable/configurable/value/get/set 3.prototype原型 4.class 5.extensible查看全部
-
严格模式:语法,错误,安全 ‘use strict’ 1.不允许用with; 2.所有变量必须声明 3.为eval单独创建一个作用域 4.函数中的特殊对象arguments是静态副本,而不像非严格模式那样,修改arguments或修改参数变量会相互影响。删除configurable=false的属性时报错,而不是忽略。 5.禁止八进制字面量,如010; 6.eval,arguments 变为关键字,不可作为变量名、函数名等。 7.this指向null 8.arguments.caller,arguments.callee被禁用查看全部
-
JS 中的try catch语句比较灵活,可以嵌套 try catch finaly 这三者可以有try 与其他两者,或者三者都出现。 ”finaly" 之后再“outer",”oops“ 在红色try中遇到错误,跳到最近的catch语句进行处理,但是到达要先退出当前的try...finally,因此会输出"finally",之后才是"outer""oops"查看全部
-
js没有块级作用域,比如for循环中的var i,在循环结束后依旧可以访问; var a=b=1,则b为全局变量查看全部
-
/正则表达式/ 或 new RegExp("正则表达式")查看全部
-
可以创建一个父类的实例来作为子类的原型继承,但是当父类的构造函数有参数时,不太可取; 可使用Objcet.create(obj)来继承,但有的浏览器不支持,可以使用模拟方法. 第三种方法最好查看全部
-
prototype属性与原型查看全部
-
配合String的方法使用查看全部
-
/***使用***/ /正则表达式/ 或 new RegExp("正则表达式") /***基本元素***/ . 任意字符(除换行符) \d 数字(0-9) \D 非\d \w 数字(0-9)or字母a-z(包括大小写)or下划线 \W 非\w \s 空格符,TAB,换行符,换页符 \S 非\S \t \r \n \v \f tab 回车 换行 垂直制表符 换页符 /***限制条件***/ [...] 字符范围以内 [^...] 字符范围以外 ^ 行首(匹配位置必须在行首)//^la $ 行尾 //la$ \b 零边界(例:\bla (o lapa)为true,(olapa)为false) \B 非\b /***特殊转移符***/ \ \后面的第一个字符会当成普通的文本字符 /***分组***/ (...) 一个分组 \n n是数字,配合()使用,表示第n个分组的内容,\0表示整个表达式 (?:...) 有?:的分组表示不记录在\n时会被忽略 /***重复***/ 贪婪算法(匹配尽可能多次) x* *前字符重复>=0次 x+ *前字符重复>0次 非贪婪算法(匹配尽可能少次) x*? 同x* x+? 同x+ x? 出现0 or 1次 x/y x或者y x{n}x{n,}x{n,m} 重复 n >=n >=n而<=m 次 /***3个flag***/ global 匹配所有,不使用匹配到第一个就会停 ignoreCase 不区分大小写 multiline 按行检索 例:/bulabula/gim RegExp("bulabula","gim") /***正则属性和方法***/ /.../.global /.../.ignoreCase /.../.multiline /.../.source //正则内容 /.../.exec('字符串'); //返还正则在字符串中匹配到的字符 /.../.test('字符串'); //正则在字符串中是否匹配成功 /.../.toString(); //返还正则表达式 x.compole("y") //将x中的正则替换为y查看全部
举报
0/150
提交
取消