-
val = +val;
这一条语句表示
如果val是数字,那么+val的+号不起什么作用
如果val是字符串,那么+val的+号会企图把val转换为数字然后赋值给val
( 其实可以理解为数学里的 正号+ 和 负号- )
查看全部 -
注意:
对象man里的
get age() {}
和
set age(val) {}
并不是对象man的方法,而是对象man的属性
这是因为
只能使用man.age而不是man.age()
(但是get和set可以看做是属性的方法???)
查看全部 -
查看全部
-
firefox MDN docs:
https://developer.mozilla.org/zh-CN/learn/javascript
查看全部 -
typeof null 是Object 历史遗留
查看全部 -
delete
查看全部 -
枚举就是使用for..in来输出对象的所有属性
如果不想让对象输出原型链上的属性
可以通过if语句使用对象的hasOwnProperty()的方法作为条件来过滤掉原型链上的属性
查看全部 -
通过
Object.defineProperty(对象, 对象的属性, {属性的标签: 对应的值})
的方法来定义一个对象属性的标签的情况 如
Object.defineProperty(cat, 'legs', {enumerable : false, value : 1000});
用来定义对象cat的属性'legs'是不可枚举的!
使用这种方法定义对象属性的标签,在不写标签的情况下,enumerable都默认为false
查看全部 -
对象的一个方法
propertyIsEnumerable()
用来判断一个对象的某个属性是不是可以枚举的(也就是是否可以打印出来,显示出来)
传入形参为对象的某个属性 使用对象调用这个方法 如
obj.propertyIsEnumerable('toString') // false
查看全部 -
我们无法删除(用var定义的)变量和函数
试图delete一个(用var定义的)变量或者试图delete一个函数
都会返回false
如果在声明一个变量时 没有加var 而是隐式的把这个变量声明为全局变量 如
test = 1;
window.test; // 1
delete test; // true
这样子是可以删除变量的
查看全部 -
有些对象属性是无法delete的
比如Object.prototype
如何查看一个对象的属性是否可以删除呢?
用Object的方法getOwnPropertyDescriptor(对象,属性) 查看对象属性的标签
对象属性的标签之一configurable决定了属性是否可删除!
查看全部 -
如果对象obj不存在y属性的话
obj.y返回的是undefined
这种情况下试图读或写obj.y.z都会报错
对 var yz = obj && obj.y && obj.y.z; 的解读
如果obj不存在 则yz赋值为undefined 如果obj存在 接着判断obj.y
如果obj.y不存在 则yz赋值为undefined 如果obj.y存在 接着判断obj.y.z
如果obj.y.z不存在 则yz赋值为undefined 如果obj.y.z存在 则yz赋值为obj.y.z的值
查看全部 -
typeof
instanfof
tostring
检测函数
查看全部 -
属性读写的两种方法
①obj.x
②obj["x"]
一般情况下使用obj.x就好
如果是要使用一般for循环来遍历obj的话,使用obj["x" + i]会比较好(前提是obj的属性都是x开头加上数字)obj["x" + i]会把中括号里面的转换为字符串!
如果想用for..in..循环遍历obj的属性的话,要注意,for..in是无序的,而且很有可能会把obj原型链上的属性也一起遍历!(遍历对象的属性的话不可以用for..of..)
查看全部 -
当我们使用Object.create()方法来创建一个新对象时
这个对象的原型指向Object.create()里的形参内容!!!
也就是说
这个对象的原型proto是传入Object.create()的形参!!!
而不是 这个对象本身是传入Object.create()的形参!!!
如果传入Object.create()的形参是null的话(即Object.create(null))
这个新建的对象指向null(其实这个对象也就是null了,没有一般对象的toString()方法)
查看全部
举报