-
函数声明:
function func() {}
函数表达式:
var func = function() {};
区别:
函数声明会被预先处理,又叫做函数前置。以“函数声明”方式定义的函数,在调用它们的时候,调用表达式可以放在函数的声明的前面!以“函数表达式”方法定义的函数就不可以这样了。
查看全部 -
try的内部里
内部try有内部catch匹配
查看全部 -
try的内嵌try会找到离它最近的catch接住异常
即便这个catch在内嵌try的外面 第一个try的后面
查看全部 -
try...catch
try...finally
try...catch...finally
查看全部 -
在函数里面写
var a=b=1;
时
a是函数内的局部变量
而b被声明称了全局变量
查看全部 -
js是没有块级作用域的
只有函数作用域和全局作用域
查看全部 -
语句的种类
查看全部 -
几种运算符
void运算符返回的始终都是undefined
查看全部 -
对象的属性的值是个函数
该函数返回this
用HTML-DOM调用这个对象的这个属性的值(就是调用这个函数)
得到的返回值this是这个对象本身
查看全部 -
关于new运算符
查看全部 -
configurable标签为true时对象的属性才可以被delete掉
查看全部 -
运算符
查看全部 -
表达式的种类
查看全部 -
对象标签:
[[proto]]:原型链
[[class]]:toString
[[extensible]]:表示对象的属性是否可以添加。
Object.isExtensible(obj) 检测是否可扩展 默认可扩展 //true
Object.preventExtensions(obj) 改为不可扩展(防止扩展),使obj对象不可新增属性,原属性可改、可删
防止扩展的目的:
Object seal(obj) 把对象的所有configurable(可配置)属性改为false,使obj不可新增属性,原属性可改但不可删
Object.isSealed(obj) 判断对象是否被seal(密封)
Object.freeze(obj) 冻结对象(不可写writable)writable为false,使obj不可新增属性,原属性不可更改、删除
Object.isFrozen(obj) 检测对象是否被冻结
注意,当Object.freeze(obj)后,Object.isSeal(obj)返回的也是true,也就是说,Object.isSeal(obj)返回true,其原属性也可能不可改。序列化:
转为json字符串
JSON.stringify(obj);
属性的值为undefined,属性不会出现在数列化的结果。
值为NaN和Infinity会转为null,Date()会转为UTC时间 格式查看全部 -
1、创建属性标签的方法: defineProperty(参数1-对象,参数2-属性名,参数3-具体每个属性的值)
2、创建多个属性标签的方法: defineProperties(参数1-对象,参数2-每个属性都是对象)
3、访问所有属性标签的方法: getOwnPropertyDescriptor(对象,属性名)
Object.getOwProertyDescriptor(obj,property_name);返回obj对象的属性名为property_name的属性标签。
obj:是对象名,property_name:是该对象的属性名;
属性标签:
value: 属性值
writable: 该属性是否可写,可改变<br>
enumerable:该属性是否可被枚举,就是可在for in中出现<br>
configurable: 该属性的标签是否可改变,是否可用delete将该属性删除。例子:
var obj = {x:1}
Object.getOwnPropertyDescriptor(obj,"x");//显示当前属性x下的所以标签
//Object {value: 1, writable: true, enumerable: true, configurable: true}
设置属性标签权限
Object.defineProperty(pro,"name",{
value:"mimi",
configurable:false,
writable:false,
enumerable:true
})
Object.defineProperties(pro,{
age:{value:"12",writable:true,enumerable:true},
like:{value:"cat",enumerable:true}
})查看全部
举报