-
nan与任何不等查看全部
-
'37'-7//30 '37'+7//377 mum-0//转为数字查看全部
-
valueOf - 尝试把对象转换为基本类型时自动调用的函数,可自己定义 使用一元运算符 + 可转换为数字 当toString 和 valueOf 同时存在,先寻找valueOf,如果不存在或不合法的值(为对象),则再寻找toString;否则使用valueOf的方法。查看全部
-
2、Object.isExtensible标签是否可扩展,可以添加属性修改属性 3、Object.seal([obj])使configurable的属性标签设定为false,即使对象的属性不能被配置 Object.isSealed([obj])判断对象是否为不可配置 4、Obeject.freeze([obj])将对象的configurable属性标签以及writable属性标签设定为false Object.isFreozen([obj])判断对象是否被冻结查看全部
-
1、Object.prototype.toString方法会将参数变为对象再做处理查看全部
-
序列化 通过全局的JSON.stringify(obj);做序列化处理 注意: 1、当你对象中有属性的值是undefined的时候,这该属性是不会出现在序列化字符串的结果里 2、当你属性的值是NaN或者Infinity时,序列化的结果是null;当你的属性值是new Date(),序列化的结果是UTC的时间格式 后端返回JSON数据,则用JSON.parse来转化;合法的JSON的属性必须用双引号引起来查看全部
-
不同configurable 和 writable 下,可否修改的属性标签列表查看全部
-
Object.getOwProertyDescriptor(obj,property_name);<br> value: 属性值 writable: 该属性是否可写,可改变<br> enumerable:该属性是否可被枚举,就是可在for in中出现<br> configurable: 该属性的标签是否可改变,是否可用delete将该属性删除。 用defineProperty定义属性时,默认configurable为true,如果设置为false后,该属性不管是什么方式都无法更改。查看全部
-
var obj = new foo(); obj.z; //1 obj.z = 10; obj.z;// still 1 ----- 如果对象的原型链上有 z 属性,且z 属性有 get/set 方法,则会直接在obj 上添加 z 属性,而是使用 obj的原型链上的get/set 方法。 此种情况下希望在 obj 上添加 z 属性,需要使用defineProperty()方法,此方法默认所有标签为false 若以后需要delete obj 上的z 属性,需把configurable:true查看全部
-
建议用点。但是如果是要拼的话用中括号。用for in会把原型链的读出来。 2、访问不存在属性,进行原型链查找,末端找不到,会undefined。 3、写属性,有的话就修改,没的话就新创建并赋值。 4、delete 删除属性,重复删除同一个属性,任然返回true。所以delete并不代表操作成功或者失败了,而是说还有没有这个属性值。prototype不能被删除。 5、configurable:是否可配置。getOwnPrototypeDescriptor(obj,属性) 6、var 定义的都不可以删除。函数和函数的函数都不可以被delete掉。隐式创建的变量可以删除(不推荐的语法)。 7、in操作符会向原型链向上查找的,hasOwnProperty自己有没有(用在for in判断过滤原型上的属性)。 8、Enumera不了:是否可枚举。 9、object.defineProterty创建的对象他对应的属性默认false。而字面量和new和赋值而创建的对象的默认的是true 10、!=undefined。就是不等于null和undefined、查看全部
-
注意: 1. 用for-in遍历时,原型链上的属性也会被遍历到,而且是无序遍历。 2. 属性删除用delete, prototype属性不可被删除;var定义的变量也不可用delete删除,函数也不可以被delete掉(经验证,不同的内核实现方式不同,在chrome下不可被delete掉,返回false,但在firefox和IE10下可以被delete掉,返回true,对于函数也是相同的结果) 【eval()里面用var定义的变量可以用delete删除。】查看全部
-
1、obj.z=5;-->若给obj赋值,并不会去原型链上查找,看obj上是否有这个值,有就能修改,没有就仅在当前对象添加值 2、delete obj.z后,通过obj.z访问到的是原型上的z;delete obj.z只能delete当前对象的属性而不会去影响到原型链查看全部
-
给对象赋值时,并不会去查找原型链,仅在该对象内查找,有则覆盖,无则创建。 obj.z = undefined; 并不一定代表 obj 上没有z属性,可能是有,其值为undefined。 如果想继续使用原型链上的z ,需要delete obj.z 。 用直接赋值法创建对象时,对象的属性可以通过hasOwnProperty和in来判断是否是原型中的属性,还是对象自己添加的属性。注意:对象自己添加的属性可以通过delete来删除,但不能用delete删除原型上的属性。同时,发现一个属性值为undefined不一定是这个值未定义,而有可能是有这个属性,但其属性值就是undefined的。查看全部
-
对象构造: 除了本身被赋予的值之外,对象还有几个隐藏标签: proto:对象的对象属性prototype上的赋值 class:对象的种类 extensible:是否允许该对象继续增加新的属性 另外对象的值(如 x=1),也有对应的属性或方法,提供一些访问权限的控制 writable:是否可写 enumerable:是否能被删除 configurable:是否能够枚举 value:值 get/set:查看全部
-
JS的严格模式: 定义和优点:严格模式是一种特殊的执行模式,它修复了部分语言上的不足(禁用with),提供了更强的错误检查(重复属性,删除delete不可配置的属性等),并增强了安全性(在eval中使用独立作用域等); 模式的使用: (1)function func(){'use strict';}好处:向上兼容 (2)'use strict'; function func(){}指定整个js内的代码都是在严格模式下 与普通模式的区别: 在严格模式下,①不允许使用with;②不允许未声明的变量被赋值③arguments变为参数的静态副本,不管参数传与不传,对arguments无影响,但是对象的属性除外;④delete参数,函数名报错⑤delete不可配置的属性报错⑥对象字面量重复属性名报错⑦禁止八进制字面量⑧eval,arguments变为关键字,不能作为变量、函数名⑨eval变为独立作用域,其它地方不可以拿到eval的值;查看全部
举报
0/150
提交
取消